/*按键检测函数*/
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;
}
|