嵌入式蓝桥杯-GPIO的使用

前言

        准备参加蓝桥杯,做一些笔记和记录,分享出来供大家参考,如果表述,看法有误,或有更好的想法,请发表评论,我会加以改正。

        这一章我总结了GPIO的输入,输出,和我做蓝桥杯大题的一些小技巧

一、STM32CudeMX的使用

        使用cudemx新建一个工程

 

 

 修改箭头处的信息,mcu的型号进行对应的选择,蓝桥杯的对应的g431如图设置。

 

 推荐这样设置这样及保障了文件尽可能的小,也便于修改,然后点击生成文件即可

 提示

        自己的代码一定要写在begin和end之间,不然当你有使用cubemx初始化别的功能时会将你自己写的代码全部覆盖掉

二、GPIO

1.输出

         初始化对应的引脚

        打开这一初始化函数我们可以看到对应的初始化,使用cubemx相对于标准库来说将初始化做的更加方便和简单。

         打开gpio.h文件找到需要使用到的函数

         



//此函数可以将对应引脚设置为高低电平
void   HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinStatePinState);
//此函数可以反转引脚对应的高低电平
void   HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);


//例子

//设置pb0为低电平,高电平对应参数为GPIO_PIN_SET
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);

//反转pb0的电平,高变低,低变高
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);

2.输入

         对应函数的使用


//读电平
HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);


//读取pb0的电平,存入变量key
uint8_t key;
key=HAL_GPIO_ReadPin(GPIB,GPIO_Pin_0);


三.按键长短按的解决方法

//短按
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
		{
            //static uint8_t i=0;
			HAL_Delay(10);//按键消抖
			if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
			{
                //所需要处理的内容
				while((HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0))
				{
                    
					//HAL_Delay(10);

				}
			}
		}

//长按
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
		{
            static uint8_t i=0;
			HAL_Delay(10);//按键消抖
			if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
			{
               
				while(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
				{
                    i++;
				    HAL_Delay(10);
                    if(i>80)//长按0.8s后执行
                    {
                        //长按所需要执行的代码
                    }

				}
              i=0;
			}
		}

        最好宏定义按键,可以更加直观的对按键进行控制

#define key1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
STM32是一款广泛应用于嵌入系统开发的微控制器,其具有强大的计算能力和丰富的外设接口,广泛应用于各种领域。在嵌入系统设计中,常常会使用STM32控制LED灯和LCD显示器。 "LED全亮"是指LED灯全亮的状态,通过STM32的GPIO外设控制LED的驱动引脚,将其输出为高电平信号即可实现所有LED灯点亮。我们可以通过设置相应引脚的输出状态为高电平来实现这一效果,例如使用寄存器操作或者HAL库函数进行设置。 "LCD全白"是指LCD显示器全白的状态,一般来说,我们需要使用STM32的外设接口(如SPI、I2C等)将显示数据传输给LCD显示器。通过向LCD传输特定的数据和命令,我们可以实现LCD显示白色的效果。具体实现方法可以根据LCD模块的不同而有所差异,通常需要先进行初始化,然后通过写入相应的数据或命令设置所有像素点为白色。同样,可以使用寄存器操作或者库函数进行设置。 "嵌入蓝桥杯"是指针对嵌入系统开发的一个竞赛活动。参赛者需要基于某种硬件平台(如STM32)进行嵌入系统设计和开发,并完成一系列特定的任务和项目。其中,控制LED全亮和LCD全白可能是其中的一项任务或项目。 在嵌入蓝桥杯中,使用STM32控制LED全亮和LCD全白可以作为一个任务的一部分。参赛者可以利用STM32的丰富外设和强大处理能力,编写相应的程序代码,通过控制引脚状态和传输LCD数据,实现LED全亮和LCD全白的效果。同时,参赛者还需要考虑电路设计、时序控制等方面的问题,以确保稳定可靠地实现这两个功能。通过参加嵌入蓝桥杯,参赛者可以锻炼自己的嵌入系统开发能力,并将理论知识与实际应用相结合,提高自身嵌入系统设计能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值