嵌入式蓝桥杯-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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值