基于stm32写流水灯
时间: 2023-11-03 15:08:01 浏览: 88
stm32 流水灯
以下是基于STM32写流水灯的代码:
```
#include "stm32f10x.h"
void delay(uint32_t time);
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// Enable GPIOC clock
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// Configure PC0, PC1, PC2, PC3, PC4, PC5, PC6 and PC7 as output push-pull
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1)
{
// Turn on LEDs one by one
GPIO_SetBits(GPIOC, GPIO_Pin_0);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_1);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_2);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_3);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_4);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_5);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_6);
delay(500);
GPIO_SetBits(GPIOC, GPIO_Pin_7);
delay(500);
// Turn off LEDs one by one
GPIO_ResetBits(GPIOC, GPIO_Pin_0);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_1);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_2);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_3);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_4);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
delay(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_7);
delay(500);
}
}
void delay(uint32_t time)
{
uint32_t i;
for (i = 0; i < time; i++);
}
```
该代码使用了GPIOC口的0~7号引脚控制8个LED灯,实现了流水灯的效果。在while循环中,先依次点亮8个LED灯,然后再依次熄灭8个LED灯,循环往复,从而实现了流水灯的效果。为了使LED灯闪烁的时间可控,使用了一个简单的延时函数。
阅读全文