【国信长天蓝桥杯】CT117E-M4 嵌入式开发板基础篇 ② 读取按键的值,按键使用步骤

本文详细介绍了基于国信长天CT117E-M4开发板的按键使用方法,包括按键的硬件原理、初始化配置、按键扫描函数的实现及在主函数中的应用。通过延时消抖等技术确保稳定读取按键状态,适用于电子竞赛中的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

本文章基于国信长天 CT117E-M4 嵌入式开发板,讲述了开发板上按键的工作原理,按键的使用步骤,祝各位同学蓝桥杯电子比赛取得好成绩!
国信长天开发板

按键部分的原理图

M4按键原理图

从上图可以看出,开发板上共配备了4个按键,分别连接在PB0PB1PB2PA0引脚上,引脚通过10K的电阻连接在电源正极VDD,按键的另一端连接在电源负极GND,分析可知,在没有按键按下时,对应的GPIO为高电平,有按键按下时,对应的GPIO为低电平。

按键的使用步骤

下文将以赛方提供的示例代码HAL_06_LCD为基础,为大家讲解按键的使用步骤,赛方提供的示例代码可以加入我们的备赛交流QQ群(482754201),在群里下载:
在这里插入图片描述

① 将 PB0PB1PB2PA0 初始化为输入模式

双击工程目录下的HAL_06_LCD.ioc,使用STM32CubeMX软件打开工程配置。

在这里插入图片描述

在配置页面将按键对应的引脚 PB0PB1PB2PA0 设置为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 按键 使用步骤总结如下:

  1. 配置按键引脚PB0PB1PB2PA0初始化为输出模式
  2. 复制文章中Key_Scan()代码到main.c中的合适位置
  3. 在主函数中读取并使用KEY按键

相关知识点:
Key_Scan是一个标准的按键扫描函数,包括演示消抖和等待抬起,其中使用了读取引脚点评的库函数:
HAL_GPIO_ReadPin(GPIOx, GPIO_Pin_x)
如果引脚为高电平,则读取到的结果为1,如果引脚为低电平,则读取到的结果为0。同学们需要牢记上面函数的用法,并尝试自己在不参考这篇文章的情况下(比赛时可没得参考),自己写出Key_Scan()函数。

课后练习

在这里插入图片描述

如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

学习过程中遇到问题可以在评论区留言,或者加入我们的QQ群(482754201),在群里讨论。

需要蓝桥杯嵌入式开发板的同学可以在海鲜市场搜索鹏老师蓝桥杯,鹏老师设计的蓝桥杯练习板,功能和蓝桥杯赛方指定的设备功能完全兼容,并做了一些优化,价格仅仅是官方设备的一半,可以为预算有限的同学节约一笔开支。

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值