STM32F103RBT6流水灯代码
时间: 2024-11-21 11:29:41 浏览: 22
STM32F103RBT6是一款基于Cortex-M3内核的微控制器,常用于嵌入式系统开发。关于流水灯的代码,这是一个基本的示例,假设我们使用GPIO模块控制LED灯:
```c
#include "stm32f10x.h" // 引入STM32F10X的头文件
// LED定义,这里假设有8个LED连接到PA8-PA15
#define LED_PIN_P8 GPIO_Pin_0
#define LED_PIN_P9 GPIO_Pin_1
... (依此类推,直到P15)
void delay_ms(uint32_t ms) {
uint32_t start = HAL_GetTick();
while ((HAL_GetTick() - start) < ms);
}
int main(void) {
// 初始化GPIO
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD, ENABLE); // 启动GPIOA和GPIOD时钟
GPIO_InitStructure.GPIO_Pin = LED_PIN_P8 | LED_PIN_P9; // 初始化第一个LED的GPIO
GPIO_InitStructure.GPIO_Mode = GPIO_Mode Outs; // 设置为推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 开始流水灯循环
for (uint16_t i = 0; i <= 7; ++i) { // 从第一个LED开始,顺时针点亮每个LED
GPIO_SetBits(GPIOA, LED_PIN_P8 + i * GPIO_Pin_1); // 点亮当前LED
delay_ms(200); // 暂停200毫秒
GPIO_ResetBits(GPIOA, LED_PIN_P8 + i * GPIO_Pin_1); // 关闭当前LED
delay_ms(200); // 再次暂停200毫秒
}
while (1); // 无限循环,程序等待中断
}
阅读全文