STM32CUBEMX配置教程(三)通用GPIO配置
基于STM32H743VI 使用STM32CUBEMX两年了,始终觉得这个工具非常的方便,但因为不是经常使用,导致有些要点总是会有些遗忘,因此写下这一系列教程以供记忆,顺便让我这个大萌新给广大小萌新提供一些学习帮助。
本次配置的工程链接在最下方,有需要自取。 0基础可以从第一个教程开始阅读 STM32CUBEMX配置教程(一)基础配置 STM32CUBEMX配置教程(二)时钟等内部参数配置
1 新建工程
参考STM32CUBEMX配置教程(一)基础配置
2 修改时钟树
参考STM32CUBEMX配置教程(二)时钟等内部参数配置
3 GPIO输出配置
点击CUBEMX左侧你想要配置的引脚,以配置PA0为例,即可出现GPIO的配置界面,在此只介绍通用的GPIO配置,即模拟的GPIO,再简单来说只配置GPIO为输入或者输出,对应GPIO_Input和GPIO_Output。 若想要配置PA0为输出模式,则在上图界面中点击GPIO_Output即可配置引脚为输出,同时在界面上也会有相应的显示: 此时只是仅仅配置了GPIO口为输出模式,STM32CUBEMX还提供许多其他参数以供配置。点击System Core下的GPIO选项,从右侧窗口找到PA0这个IO口并点击一下。 点击之后窗口界面会显示PA0的详细配置参数(输出),如下图所示,其中:
GPIO output leve
表示上电的默认电平,可配置高或者低
GPIO mode
表示输出模式,可配置为Output Push Pull(推挽输出)或Output Open Drain(开漏输出)
GPIO Pull-up/Pull-down
表示是否上下拉,可配置为上拉或者下拉
Maximum output speed
表示输出速度,对于高速接口需要配置为Very High
User Label
可修改IO口名称,比如可写入LED,把IO口名称变为LED
对于输出速度,某些型号可能会写2M,20M,50M等字样,但是对于通用IO口来说不可能达到50M的翻转速率。详见番外篇:STM32之GPIO口速率配置究竟代表什么 对于驱动LED,一般配置IO口为推挽输出,上下拉非必要,IO速度低速即可。 配置完成生成工程,下面介绍调用的函数,首先是GPIO控制函数:
HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
例如我想要控制PA0为高电平:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);
我想要控制PA0为低电平:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);
下面是GPIO的自动翻转的函数:
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
例如控制PA0自动翻转
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
4 GPIO输入配置
上述介绍了输出的一些功能配置以及调用的函数,下面介绍输入的配置即调用的函数。
暂未写完
|