-
按键的硬件电路
默认是高电平,按键按下是低电平,所以是下降沿输入。
电容是硬件消抖,按下时产生抖动电流流向电容,电流稳定后电容释放电给GND,产生低电平。
浮空就是 浮在空中.也就是没有什么把他拉下来,也没有什么把它拉上去. 浮空最大的特点就是电压的不确定性,它可能是0V,也可能是VCC,还可能是介于两者之间的某个值(最有可能). 浮空一般用来做ADC输入用,这样可以减少上下拉电阻对结果的影响。
-
读取GPIO输入库函数
- GPIO_ReadInputDataBit:读取某位输入
GPIOx(A...E)的IDR寄存器与上对应引脚(例如GPIO_Pin_5就是100000,对应寄存器第5位,与操作后第5位保留,其他位为0)
- GPIO_ReadInputData:读取全部16个位的输入
-
代码
/********************************************************************************************************* * 函数名称: ConfigKeyOneGpio * 函数功能: 配置KEYONE的GPIO * 输入参数: void * 输出参数: void * 返 回 值: void * 创建日期: 2020年04月11日 * 注 意: *********************************************************************************************************/ static void ConfigKeyGpio(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能时钟 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 GPIO_Init(GPIOB,&GPIO_InitStruct); //PB3 LED1 } /********************************************************************************************************* * API函数实现 *********************************************************************************************************/ /********************************************************************************************************* * 函数名称: InitKeyOne * 函数功能: 初始化KeyOne * 输入参数: void * 输出参数: void * 返 回 值: void * 创建日期: 2020年04月11日 * 注 意: *********************************************************************************************************/ void InitKeyOne(void) { ConfigKeyGpio(); } /********************************************************************************************************* * 函数名称: ScanKeyOne * 函数功能: 按键扫描 * 输入参数: * 输出参数: void * 返 回 值: void * 创建日期: 2020年04月11日 * 注 意: *********************************************************************************************************/ uint8_t ScanKeyOne(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin) { if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)== KEY_DOWN) { while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin)== KEY_DOWN); return KEY_DOWN; } else { return KEY_UP; } }