目录
一、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)
欢迎交流与指正,本篇文章水注与名字不符是由于发表时新名字未更新。