基于stm32f103vet6芯片做跑马灯代码
时间: 2024-09-23 07:16:10 浏览: 56
基于STM32F103VET6这款微控制器做跑马灯效果,通常会涉及到GPIO控制LED灯以及定时器的使用。这是一个简单的示例代码:
```c
#include "stm32f10x.h" // 引入STM32头文件
// 定义LED灯的GPIO口和引脚
#define LED_PIN GPIO_Pin_0
#define LED_GPIO GPIOB
#define LED_PORT GPIOB_BASE
void delay_ms(uint16_t ms) {
uint32_t start = HAL_GetTick();
while((HAL_GetTick() - start) < ms * 1000);
}
void led_blink() {
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
HAL_GPIO_Init(LED_GPIO, &GPIO_InitStructure);
for (uint8_t i = 0; i <= 7; ++i) { // 循环点亮每个LED
HAL_GPIO_WritePin(LED_GPIO, LED_PIN, GPIO_PIN_SET); // 点亮LED
delay_ms(500); // 暂停一段时间
HAL_GPIO_WritePin(LED_GPIO, LED_PIN, GPIO_PIN_RESET); // 熄灭LED
delay_ms(500);
}
}
int main(void) {
HAL_Init(); // 初始化系统
GPIO_Init(LED_GPIO, NULL); // LED初始化
while (1) {
led_blink(); // 无限循环,持续跑马灯效果
}
return 0;
}
```
在这个例子中,首先设置LED的GPIO配置为输出推挽模式,并定义了一个延迟函数用于控制LED闪烁的速度。`led_blink`函数负责按顺序点亮和熄灭LED,形成跑马灯的效果。
阅读全文