stm32 4个跑马灯
时间: 2023-09-28 21:11:21 浏览: 76
以下是使用STM32实现4个跑马灯的代码:
```c
#include "stm32f10x.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA和GPIOB时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出速度
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; //设置4个LED引脚
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8; //设置4个LED引脚
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB
while (1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_0); //点亮第一个LED
GPIO_ResetBits(GPIOB, GPIO_Pin_8); //熄灭第四个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //熄灭第一个LED
GPIO_SetBits(GPIOA, GPIO_Pin_1); //点亮第二个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOA, GPIO_Pin_1); //熄灭第二个LED
GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮第三个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED
GPIO_SetBits(GPIOB, GPIO_Pin_6); //点亮第四个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_6); //熄灭第四个LED
GPIO_SetBits(GPIOA, GPIO_Pin_0); //点亮第一个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOA, GPIO_Pin_0); //熄灭第一个LED
GPIO_SetBits(GPIOA, GPIO_Pin_1); //点亮第二个LED
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOA, GPIO_Pin_1); //熄灭第二个LED
GPIO_SetBits(GPIOB, GPIO_Pin_6); //点亮第四个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_6); //熄灭第四个LED
GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮第三个LED
for (int i = 0; i < 1000000; i++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第三个LED
}
}
```
该代码使用了GPIOA和GPIOB的引脚,其中GPIOA的0、1、2、3引脚和GPIOB的5、6、7、8引脚分别连接了4个LED灯,通过使用延时实现跑马灯效果。
阅读全文