- /*按键检测函数*/
- uint8_t key_c()
- {
- static uint8_t key_o = 0x0f;
- uint8_t i, key_n, x;
- const uint16_t key_pin[SWN] = {N_K1, N_K2, N_K3, N_K4}; //各个按键的引脚
- const GPIO_TypeDef* key_port[SWN] = {N_K1C, N_K2C, N_K3C, N_K4C};//各个按键的端口
- for(key_n = 0, i = 0; i < SWN; i++)//当按键按下赋值到key_n中
- {
- key_n <<= 1;
- if(GPIO_ReadInputDataBit((GPIO_TypeDef*)key_port[i], key_pin[i]))
- key_n |= 0x01;
- }
- x = (key_n ^ key_o) & key_o;//检测有无按键按下
- key_o = key_n;//与下一次值比较
- return x;
- }
|