摘要
本文章基于国信长天 CT117E-M4 嵌入式开发板,讲述了开发板上按键的工作原理,按键的使用步骤,祝各位同学蓝桥杯电子比赛取得好成绩!
按键部分的原理图
从上图可以看出,开发板上共配备了4个按键,分别连接在PB0
,PB1
,PB2
,PA0
引脚上,引脚通过10K的电阻连接在电源正极VDD,按键的另一端连接在电源负极GND,分析可知,在没有按键按下时,对应的GPIO为高电平,有按键按下时,对应的GPIO为低电平。
按键的使用步骤
下文将以赛方提供的示例代码HAL_06_LCD
为基础,为大家讲解按键的使用步骤,赛方提供的示例代码可以加入我们的备赛交流QQ群(482754201),在群里下载:
① 将 PB0
,PB1
,PB2
,PA0
初始化为输入模式
双击工程目录下的HAL_06_LCD.ioc
,使用STM32CubeMX软件打开工程配置。
在配置页面将按键对应的引脚 PB0
,PB1
,PB2
,PA0
设置为GPIO_Input
模式,然后点击右上角的GENERATE CODE
生成代码:
② 按键扫描函数
使用Keil打开感刚刚生成的代码,将下列代码粘贴到main.c
的/* USER CODE BEGIN 0 */
和/* USER CODE END 0 */
之间。
uint8_t Key_Scan(void) //按键扫描函数
{
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == 0) //PB0 (按键B1)被按下
{
HAL_Delay(10);//延时消抖
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == 0)
{
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == 0); //等待按键抬起
return 1;//返回1
}
}
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == 0) //PB1 (按键B2)被按下
{
HAL_Delay(10);//延时消抖
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == 0)
{
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == 0); //等待按键抬起
return 2;//返回2
}
}
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == 0) //PB2 (按键B3)被按下
{
HAL_Delay(10);//延时消抖
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == 0)
{
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) == 0); //等待按键抬起
return 3; //返回3
}
}
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 0) //PA0 (按键B4)被按下
{
HAL_Delay(10);//延时消抖
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 0)
{
while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == 0); //等待按键抬起
return 4; //返回4
}
}
return 0; //没有按键按下返回0
}
③ 在主函数中读取并使用按键
int Key_Value = 0;
Key_Value = Key_Scan();
if(Key_Value == 1) //按键B1被按下
{
}
if(Key_Value == 2) //按键B2被按下
{
}
if(Key_Value == 3) //按键B3被按下
{
}
if(Key_Value == 4) //按键B4被按下
{
}
总结
KEY 按键 使用步骤总结如下:
- 配置按键引脚
PB0
,PB1
,PB2
,PA0
初始化为输出模式 - 复制文章中
Key_Scan()
代码到main.c
中的合适位置 - 在主函数中读取并使用KEY按键
相关知识点:
Key_Scan是一个标准的按键扫描函数,包括演示消抖和等待抬起,其中使用了读取引脚点评的库函数:
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin_x)
如果引脚为高电平,则读取到的结果为1,如果引脚为低电平,则读取到的结果为0。同学们需要牢记上面函数的用法,并尝试自己在不参考这篇文章的情况下(比赛时可没得参考),自己写出Key_Scan()
函数。
课后练习
如果此文章对你有帮助,欢迎点赞
关注
收藏
转发
.
学习过程中遇到问题可以在评论区留言,或者加入我们的QQ群(482754201),在群里讨论。
需要蓝桥杯嵌入式开发板的同学可以在海鲜市场搜索鹏老师蓝桥杯
,鹏老师设计的蓝桥杯练习板,功能和蓝桥杯赛方指定的设备功能完全兼容,并做了一些优化,价格仅仅是官方设备的一半,可以为预算有限的同学节约一笔开支。