stm32 8个流水灯
时间: 2023-10-18 20:06:20 浏览: 91
stm32的流水灯例子程序!!.pdf
以下是使用STM32 HAL库实现8个流水灯的代码:
```c
#include "main.h"
int main(void)
{
HAL_Init(); // 初始化HAL库
// 使能GPIO时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
// 配置GPIO引脚为输出模式
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; // 没有上下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // GPIO速度为低速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
while (1)
{
// 顺序点亮8个LED灯
for (int i = 0; i < 8; i++)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 << i, GPIO_PIN_SET); // 点亮第i个LED灯
HAL_Delay(100); // 延时一段时间
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 << i, GPIO_PIN_RESET); // 熄灭第i个LED灯
}
// 逆序点亮8个LED灯
for (int i = 7; i >= 0; i--)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 << i, GPIO_PIN_SET); // 点亮第i个LED灯
HAL_Delay(100); // 延时一段时间
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0 << i, GPIO_PIN_RESET); // 熄灭第i个LED灯
}
}
}
```
以上代码中,我们将PA0~PA7配置为输出模式,并使用一个循环来顺序/逆序点亮这8个LED灯,并利用`HAL_Delay()`函数来延时一段时间,从而形成流水灯的效果。
阅读全文