嵌入式(STM32)- GPIO
GPIO
基本配置
使用 IDE: STM32Cube IDE 使用芯片:STM327431CBU6
点亮LED
目的:使得小灯以1Hz的频率闪亮。
Step 1 图形化界面设置
首先打开原理图,观察LED灯相关电路(右图)。可知在LED灯引脚高电平时,LED灯亮起。在原理图上找到LED的引脚,并且在IDE的图形化界面找到相关引脚。
在原理图中可以发现,LED0灯链接了PA3引脚。因此想点亮LED0时,PA3引脚须输出一个高电平。
打开IDE的图形化界面,点击PA4,选择GPIO_Output。右键-Enter User Label,输入用户自定义的名称(比如LED0),这样可以提高程序的复用性。
之后,在左侧弹出界面点击System Core-SYS-Debug-调节为Serial Wire。
Ctrl+S保存之后进入代码界面。(代码界面也可以通过:点开相关project-Core-Src-main.c得到)
Step 2 输入代码
打开代码界面,找到main函数,在while循环中的USER CODE注释中(如果不在两行注释中写,会被删除)输入如下代码。
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
备注
HAL 是 Handware Abstraction Layer ,是一个固件库。
Pin是芯片上的引脚,可以输入,也可以输出。像原理图上的PA4就是一个引脚;而Port则是一系列引脚的总和。像PA就是一系列引脚的总和。HAL_GPIO_WritePin()函数的第一个参数就是一个指向Port的指针,而第二个参数则是指向一个Pin的指针。
备注
输入内置函数时,用 Alt+/ 快捷键调出函数提示 想要查看任何量的定义时,Ctrl并点击函数名称可以看到其定义。 想要查找函数时,在网站的第一个User manual处可以找到相关函数的用法。
信息
查找函数举例:Ctrl并点击函数名称
查到HAL_Delay函数的代码为
__weak void HAL_Delay(uint32_t Delay)
{
uint32_t tickstart = HAL_GetTick();
uint32_t wait = Delay;
/* Add a freq to guarantee minimum wait */
if (wait < HAL_MAX_DELAY){
wait += (uint32_t)(uwTickFreq);
}
//由这一行(点一点参数)可知,只要写了一个Delay函数,至少会等待1ms
while ((HAL_GetTick() - tickstart) < wait){
}
}