①【蓝桥杯】STM32G4嵌入式竞赛实训平台(CT117E-M4)学习——按键

写在前面——

        由于众所周知的原因,我们封校了,和舍友们在宿舍里开始上网课,有这一段宝贵的时光也属实难得。前段时间报名了蓝桥杯嵌入式的比赛,虽然自己学的很菜,但还是想努力一下,把备赛的过程和比赛的过程都当作一个学习的过程吧!一边学习蓝桥杯的基础知识,一边写成一下几篇博客,权当这博客就是学习的笔记。有时间回头来看看,毕竟这是个人的第一篇正式的博客。

目录

硬件平台

软件平台

按键原理图 

配置过程 

编写函数 


硬件平台

        嵌入式竞赛实训平台(CT117E-M4)是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛–嵌入式设计与开发科目”专用竞赛平台,平台STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景

CT117E-M4产片图片

软件平台

        KEIL5,STM32CubeMX 

按键原理图 

        本文主要介绍硬件平台上按键的使用,板子上共有5个按键,最左边一列,最上边是复位按键,用户可编程的按键是下面4个(原理图如下),分别为B1,B2,B3,B4,其分别与以下IO口对应PB0,PB1,PB2,PA0

配置过程 

通过分析可知,我们应该将这四个IO口配置为输入模式:

         GPIO的初始化配置我们通过CubeMX一键生成即可,以下代码是我认为比较简单实用的:

编写函数 

①按键扫描函数

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
}

②主函数中这样编写

	uint8_t 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被按下
	{
	
	}

if函数中添加想要的功能即可

  • 10
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Cui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值