stm32爱心流水灯代码
时间: 2023-09-10 18:14:32 浏览: 70
以下是一个简单的STM32爱心流水灯代码:
```c
#include "stm32f10x.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10; //配置PB0、PB1、PB5~PB10为输出模式
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_7); //点亮中间的LED
delay_ms(500); //延时500ms
GPIO_ResetBits(GPIOB, GPIO_Pin_7); //熄灭中间的LED
GPIO_SetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_9); //点亮两侧的LED
delay_ms(500); //延时500ms
GPIO_ResetBits(GPIOB, GPIO_Pin_5 | GPIO_Pin_9); //熄灭两侧的LED
GPIO_SetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_10); //点亮上下两个LED
delay_ms(500); //延时500ms
GPIO_ResetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_10); //熄灭上下两个LED
GPIO_SetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_6 | GPIO_Pin_8); //点亮其他LED
delay_ms(500); //延时500ms
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_6 | GPIO_Pin_8); //熄灭其他LED
}
}
void delay_ms(uint16_t ms) //延时ms毫秒
{
uint16_t i,j;
for(i = 0;i < ms;i++)
{
for(j = 0;j < 1141;j++);
}
}
```
这个代码使用GPIOB的PB0、PB1、PB5~PB10为输出模式,并在其中控制LED的亮灭,实现爱心流水灯的效果。代码中使用了一个简单的delay_ms函数来实现延时,可以根据需要进行修改。
阅读全文