写在前面——

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

目录

硬件平台

软件平台

按键原理图 

配置过程 

编写函数 


硬件平台

        嵌入式竞赛实训平台(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函数中添加想要的功能即可

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐