前言
STM32的独立按键的实现,需要懂得独立按键的工作原理,并且还要在STM32单片机的软硬件中进行搭建和设计。
工作原理
- STM32单片机GPIO引脚自带上拉、下拉输入,因此硬件电路部分不需要加额外的电阻实现上拉下拉。主要有以下两种方式实现独立按键设计:
(一)高电平检测独立按键:
只需要从VCC引线(杜邦线或锡焊)经过一个按键开关(按下导通即可,原理略)到单片机I/O口,并将该I/O口软件初始化配置为下拉输入或浮空输入。当按键开关按下时开关导通,单片机I/O口检测到高电平输入即完成按键检测,可自行在检测函数中设计按下按键后需要实现的功能。
(二)低电平检测独立按键:
同理从GND引线(杜邦线或锡焊)经过一个按键开关(按下导通即可,原理略)到单片机I/O口,并将该I/O口软件初始化配置为上拉输入或浮空输入。当按键开关按下时开关导通,单片机I/O口检测到低电平输入即完成按键检测,可自行在检测函数中设计按下按键后需要实现的功能。 - 注意:
实现方式不同的独立按键,按键检测函数也不相同,需要修改到对应的检测方式功能才能正常使用,比如低电平和高电平的检测独立按键,它们的按键检测判断条件是相反的。接入的高电平使用对应STM32单片机GPIO引脚所能承受的最大电压(大多数IO能承受5V,推荐使用3.3V),否则将损坏芯片。
代码部分
下面用两个独立按键点亮两个LED灯,以高电平检测独立按键为例,代码如下。
初始化函数
初始化函数代码如下。
void Key_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*开启按键端口的时钟*/
RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK|KEY2_GPIO_CLK,ENABLE);
//选择独立按键的IO引脚
GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN;
// 设置按键的引脚为浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//使用结构体初始化按键
GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStructure)