Example #1
0
//it can only handle one key now
unsigned char board_key_scan(void)
{
    uint32_t s_int_status = REG_KPD_INT_RAW_STATUS;
    uint32_t s_key_status = REG_KPD_KEY_STATUS;
    uint32_t scan_code = 0;
    uint32_t key_code =0;

    if((s_int_status & KPD_PRESS_INT0) || (s_int_status & KPD_LONG_KEY_INT0)){
        scan_code = s_key_status & (KPD1_ROW_CNT | KPD1_COL_CNT);
        key_code = handle_scan_code(scan_code);
    }else if((s_int_status & KPD_PRESS_INT1) || (s_int_status & KPD_LONG_KEY_INT1)){
        scan_code = (s_key_status & (KPD2_ROW_CNT | KPD2_COL_CNT)>>8);
        key_code = handle_scan_code(scan_code);
    }else if((s_int_status & KPD_PRESS_INT2) || (s_int_status & KPD_LONG_KEY_INT2)){
Example #2
0
//it can only handle one key now
unsigned char board_key_scan(void)
{
    uint32_t s_int_status = REG_KPD_INT_RAW_STATUS;
    uint32_t s_key_status = REG_KPD_KEY_STATUS;
    uint32_t scan_code = 0;
    uint32_t key_code =0;
#ifdef KEYPAD_DEBUG
	printf("key operation flags is %08x, key %08x\n", REG_KPD_INT_RAW_STATUS, REG_KPD_KEY_STATUS);
#endif
    if((s_int_status & KPD_PRESS_INT0) || (s_int_status & KPD_LONG_KEY_INT0)){
        scan_code = s_key_status & (KPD1_ROW_CNT | KPD1_COL_CNT);
        key_code = handle_scan_code(scan_code);
    }else if((s_int_status & KPD_PRESS_INT1) || (s_int_status & KPD_LONG_KEY_INT1)){
        scan_code = (s_key_status & (KPD2_ROW_CNT | KPD2_COL_CNT))>>8;
        key_code = handle_scan_code(scan_code);
    }else if((s_int_status & KPD_PRESS_INT2) || (s_int_status & KPD_LONG_KEY_INT2)){