GPIO的基本功能

文章目录

    • GPIO(通用I/O)
    • GPIO控制函数
      • HAL_GPIO_WritePin
      • HAL_GPIO_ReadPin
      • HAL_GPIO_TogglePin
    • 按下按键点亮LED
      • 编写代码
    • Cube生成的文件结构
    • 参考资料

GPIO(通用I/O)

  • 通用输入输出接口

  • 可以输入输出数字信号

  • STM32的GPIO每16个一组(Port),分为ABCD等

    • 例如PA0代表这是A组的第0个GPIO(Port-A Pin-0)
  • STM32的每一个不是电源或复位相关的引脚都可以用作GPIO

  • STM32的GPIO输出高电平是3.3V,输入一般可以最高承受5.25V

    • 有例外,F103的很多引脚只能承受最高3.6V

GPIO控制函数

HAL_GPIO_WritePin

void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
    //参数一般两到三个
    //第一个gpio的port,
    //例如pa0的pa
    //第二个参数是pin,例如pa0的0,不能单纯敲数字,必须使用宏定义编号,
    //例如:GPIO_PIN_0
    //可以将不同的pin按位或在一起使用,
    //例如:GPIO_Pin_1 | GPIO_Pin_2会同时操作pin1和pin2
    //第三个参数表示写入的是高电平还是低电平

作用:写一个高电平或者低电平

HAL_GPIO_ReadPin

GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

作用:读取一个GPIO的电平

HAL_GPIO_TogglePin

void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin)

作用:翻转一下电平

按下按键点亮LED

首先进行各种外设的配置

其次参考芯片原理图把LED_R的引脚PH12S配置成GPIO_Output

然后回到原理图找到按键

在这里插入图片描述

原理图表示按下按键后,它会变成低电平,松开后就会变成高电平
在这里插入图片描述

看到key连接在PA0引脚

回到cube中把PA0配置成输入(GPIO_Input)

这样就把外设配置完毕然后命名生成MDK-ARM文件

编写代码

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
if (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_Pin_SET)
{
   HAL_GPIO_WritePin(GPIOH,GPIO_PIN_12,GPIO_PIN_RESET);
}
else if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_Pin_RESET)
{
    HAL_GPIO_WritePin(GPIOH,GPIO_PIN_12,GPIO_PIN_SET);    
}
      HAL_Delay(100);
  /* USER CODE END 3 */
}
//HAL_GPIO_ReadPin(GPIOA,GPIO_Pin_0) 代表读进来是pa0的电平
//GPIO_Pin_SET是一个枚举类型变量,代表高电平,即按键没有按下
//按键没有按下时把LED灯输出低电平,即灭灯
//在whlie(1)中加入HAL_Delay防止程序一直判断条件语句增加CPU负担

编写好代码后进行编译与烧录

最后实现效果为按下按键后红灯亮起,按键没有按下时灯灭。

Cube生成的文件结构

  • main.c:程序入口
  • main.h:主头文件
    • 其他程序文件只需包含这个头文件即可使用HAL库
  • gpio.c/gpio.h: GPIO初始化函数
    • 类似的,其他外设也会有对应的.c和.h
    • 其他程序文件最好不要包含外设.h(可能会造成不兼容问题)
    • 尽量使用main.h或者stm32xx_hal.h
  • 只有 USER CODE BEGIN 和 USER CODE END 注释中间的内容是可编辑的,
  • 其他内容编辑后再重新生成工程会被覆盖

参考资料

CH1.2 GPIO 第2讲 GPIO的基本功能【南工骁鹰嵌入式软件培训】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

书阁下

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

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

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

打赏作者

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

抵扣说明:

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

余额充值