使用stm32g431rbt6的嵌入式开发板hal库写呼吸灯
时间: 2024-05-09 19:20:53 浏览: 123
以下是使用STM32G431RBT6开发板HAL库写呼吸灯的示例代码:
```c
#include "main.h"
int main(void)
{
HAL_Init();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
while (1)
{
for (int i = 0; i < 100; i++)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
HAL_Delay(i);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
HAL_Delay(100 - i);
}
for (int i = 100; i > 0; i--)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
HAL_Delay(i);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
HAL_Delay(100 - i);
}
}
}
```
上述代码中,我们首先初始化了GPIOB的第3个引脚为输出模式,然后进入了一个无限循环中,循环内部使用了两个for循环来实现呼吸灯的效果。第一个for循环逐渐增加延时时间,第二个for循环逐渐减小延时时间,从而实现呼吸灯的效果。
需要注意的是,使用HAL_Delay函数时需要在CubeMX中配置好系统时钟,否则延时时间可能会不准确。
阅读全文