点灯大师傅
本节教会使用HAL的库函数来点亮demo板上的灯
1. 硬件连接
下图所示,PC13 高电平的时候LED 为暗,低电平的时候为亮。
2. 生成代码
可以看到,配置了3个部分
- 外部时钟
- SWD 接口
- GPIO 配置成输出模式
外部晶振配置
SWD接口配置
如果不配置,会导致之后无法下载代码,请一定注意!!
GPIO 配置
串口的代码配置
时钟配置
3.编写代码
在main 函数中放入LED的驱动函数即可
在while 的函数中添加如下的GPIO 的控制代码即可
3.1使用HAL 库的方式操作GPIO
GPIO_PIN_RESET :输出0
GPIO_PIN_SET :输出1
C
while (1)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);
}
3.2 使用寄存器的方式操作
使用直接操作寄存器的方式可以减少判段,从而减少代码执行的时间,增加代码的效率。
C
while (1)
{
GPIOC->BSRR = GPIO_PIN_13;//LOW
HAL_Delay(100);
GPIOC->BSRR = (uint32_t)GPIO_PIN_13 << 16u;//HIGH
HAL_Delay(100);
}
4.后记
想必看到这已经学会点灯了,那么GPIO还有一些可玩的地方
1.如何使得GPIO有最高的输出速度?影响GPIO翻转的原因有哪些。
2.GPIO 的复用/输出模式有哪些区别,又为何要有这些。