STM32 hal库使用笔记(一)GPIO的使用—流水灯

目录

一、GPIO的工作模式

二、GPIO的基本结构

 三、GPIO实验—跑马灯

1.系统时钟初始化

2.GPIO配置

3.代码生成

​4.编写跑马灯代码


一、GPIO的工作模式

 主要可以分为八种模式,其中输入和输出分别4种。

二、GPIO的基本结构

 

由图可以看出,输出时不可以配置输入上拉/下拉(或者说不起作用),开漏输出,只能输出低电平;推挽输出,可以输出高/低电平。

在开漏模式下,可以外接一个上拉电阻再外接一个5v电源,这样也可以输出5v的高电平。

 三、GPIO实验—跑马灯

1.系统时钟初始化

如下图配置即可

 使用外部高速时钟作为时钟源,配置完成后APB1和APB2的时钟频率都是72MHZ

2.GPIO配置

查看LED灯的原理图可知,若上电默认不亮,上电应输出低电平,因此开漏输出/推挽输出都可。

 按照下图配置即可,可以加上用户标签,也方面大工程自己区分

3.代码生成

按照下图配置,包含.c/.h文件,并且只包含用到的库文件即可,节省资源。

 4.编写跑马灯代码
    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);  /*LED0 PB5??1*/ 
    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);/*LED1 PE5??0*/ 
    HAL_Delay(500);
    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);/*LED0 PB5??1*/
    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);  /*LED1 PE5??0*/
    HAL_Delay(500);


GPIO输出输入常用函数:

HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);//GPIO翻转

翻转使用方法:带参宏定义

#define LED0_TOGGLE() do{ HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN);
}while(0)

#define LED0(x) do{ x ? HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_SET) :HAL_GPIO_WritePin(LED0_GPIO_PORT, LED0_GPIO_PIN, GPIO_PIN_RESET);}while(0) 

欢迎交流与指正,本篇文章水注与名字不符是由于发表时新名字未更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乱码小伙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值