专业做棋牌网站的,平台设计是什么,17网一起做网店普宁池尾,呼叫中心系统怎么收费一、4*3键盘模块实物分析
说明#xff1a; 1、横着4排#xff0c;竖着3列#xff0c;加起来共7组#xff0c;所以对外引出7根线。 2、根据排针终端引脚又可分两类。即横排和竖列对应的引脚。
二、代码编写构想#xff1a;
1、使用7个gpio输入中断#xff0c;检测7个…一、4*3键盘模块实物分析
说明 1、横着4排竖着3列加起来共7组所以对外引出7根线。 2、根据排针终端引脚又可分两类。即横排和竖列对应的引脚。
二、代码编写构想
1、使用7个gpio输入中断检测7个引脚的输入状态。 2、当横排和竖排引脚对应的io引脚同时处于一致状态时即判断按键被按下。 1、gpio初始化....
2、对按键中断的处理
static uint8_t keyval0;
/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{uint8_t row0,column0;if(0!keyval) return;//横排四组状态编号。if(GPIO_PinGPIO_PIN_x){row0x40;//第四排}else if(GPIO_PinGPIO_PIN_y){row0x30;//第三排}else if(GPIO_PinGPIO_PIN_z){row0x20;//第二排}else if(GPIO_PinGPIO_PIN_w){row0x10;//第一排}//竖排三组状态编号if(GPIO_PIN_SETHAL_GPIO_ReadPin(GPIOx,GPIO_PIN_a)){column0x03;//第三列}else if(GPIO_PIN_SETHAL_GPIO_ReadPin(GPIOx,GPIO_PIN_b)){column0x02;//第二列}else if(GPIO_PIN_SETHAL_GPIO_ReadPin(GPIOx,GPIO_PIN_c)){column0x01;//第一列}if(0!row0!column){keyvalrow|column;//判断按键是否按下的状态//printf(key val:%02x\r\n,keyval);}
}
//对按键按下后的检测处理与判断
char get_key_ch(void)
{char ch0;if(0!keyval){if(0x11keyval)ch1;else if(0x12keyval) ch2;else if(0x13keyval) ch3;else if(0x21keyval) ch4;else if(0x22keyval) ch5;else if(0x23keyval) ch6;else if(0x31keyval) ch7;else if(0x32keyval) ch8;else if(0x33keyval) ch9;else if(0x41keyval) ch*;else if(0x42keyval) ch0;else if(0x43keyval) ch#;keyval0;}return ch;
}