写一段STM32流水灯的代码
时间: 2023-12-01 14:53:06 浏览: 24
好的,以下是基于STM32的流水灯代码:
```c
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 配置时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 设置端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
// 依次点亮每个灯
GPIO_SetBits(GPIOB, GPIO_Pin_0);
delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_1);
delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_2);
delay_ms(100);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
delay_ms(100);
// 依次关闭每个灯
GPIO_ResetBits(GPIOB, GPIO_Pin_0);
delay_ms(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
delay_ms(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_2);
delay_ms(100);
GPIO_ResetBits(GPIOB, GPIO_Pin_3);
delay_ms(100);
}
}
void delay_ms(int n)
{
for(int i = 0; i < n; i++)
{
for(int j = 0; j < 1000; j++);
}
}
```
以上代码实现了一个四个LED灯依次流水亮起的效果。当然,还需要定义一个延时函数来调整灯的亮灭速度。