stm32跑马灯实验8个led灯代码
时间: 2024-10-16 11:07:29 浏览: 340
STM32单片机做跑马灯实验,通常涉及到GPIO端口控制LED灯轮流点亮。以下是一个简单的示例代码,假设我们有8个LED连接到PA0~PA7这8个GPIO口:
```c
#include "stm32f10x.h" // 包含STM32官方库
// LED定义
#define LED0 GPIO_Pin_0
#define LED1 GPIO_Pin_1
...
#define LED7 GPIO_Pin_7
#define ALL_LEDS (LED0 | LED1 | ... | LED7)
// STM32初始化函数
void init_GPIO(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); // 启动GPIOD时钟
GPIO_InitStructure.GPIO_Pin = ALL_LEDS; // 设置所有LED灯的位
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 高速
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
// 跑马灯函数,将每个LED依次点亮
void run_race_light(uint8_t delay_ms) {
for(int i = 0; i < 8; ++i) {
GPIO_SetBits(GPIOD, LEDi); // 点亮当前LED
HAL_Delay(delay_ms); // 暂停一段时间
GPIO_ResetBits(GPIOD, LEDi); // 关闭当前LED
}
}
int main(void) {
init_GPIO(); // 初始化GPIO
while(1) {
run_race_light(500); // 每次循环点亮并关闭LED,延时500毫秒
}
}
```
阅读全文