写一个简单的stm32流水灯代码
时间: 2024-10-08 21:09:50 浏览: 110
STM32流水灯是一种常见的入门级微控制器项目,通常用于学习GPIO控制和定时器功能。下面是一个基于STM32F103C8T6(如STM32F103系列)的简单LED流水灯示例代码,假设我们有8个LED连接到PA8-PA15这7个GPIO口:
```c
#include "stm32f1xx.h"
// LED配置
#define LED_PIN i
#define LED_COUNT 8
void delay_ms(uint16_t ms) {
uint32_t start = HAL_GetTick();
while (HAL_GetTick() - start < ms * 1000);
}
void led_blink() {
for (int i = 0; i < LED_COUNT; i++) {
GPIO_SetBits(GPIOA, 1 << LED_PIN); // 设置LED ON
delay_ms(500); // 等待一段时间
GPIO_ResetBits(GPIOA, 1 << LED_PIN); // 设置LED OFF
delay_ms(500); // 再次等待一段时间
}
}
int main(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 开启GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | ... | GPIO_Pin_15; // 所有的LED GPIOs
GPIO_InitStructure.GPIO_Mode = GPIO_Mode Outs; // 设置模式为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 高速推挽
GPIO_Init(GPIOA, &GPIO_InitStructure);
while (1) {
led_blink(); // 永远循环闪烁LED
}
}
```
阅读全文