stm32实现十个led灯流水灯程序代码
时间: 2025-01-10 20:23:15 浏览: 157
在STM32单片机上实现十个LED灯的流水灯效果,通常会涉及到GPIO配置、定时器控制以及状态转移数组的设计。这里给出一个基本的示例代码片段,假设我们使用的是STM32F103C8T6,连接了P1.0到P1.9这10个LED:
```c
#include "stm32f10x.h"
#include <stdint.h>
#define LED_COUNT 10
// LED的状态转移数组,用于改变LED灯的点亮顺序
uint8_t led_sequence[LED_COUNT] = {5, 4, 3, 2, 1, 0, 9, 8, 7, 6};
void led_init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | ... | GPIO_Pin_9; // 所有LED管脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void delay_ms(uint16_t ms) {
uint32_t start_time = HAL_GetTick();
while((HAL_GetTick() - start_time) < ms);
}
int main(void) {
led_init();
while (1) {
for (int i = 0; i < LED_COUNT; ++i) {
GPIO_SetBits(GPIOA, led_sequence[i]); // 点亮当前LED
delay_ms(50); // 等待一段时间
GPIO_ResetBits(GPIOA, led_sequence[i]); // 熄灭当前LED
}
}
return 0;
}
```
阅读全文
相关推荐


















