STM32 + LED流水灯实例 8个LED灯按照从右到左的顺序依次点亮后,所有LED灯都闪烁两下
时间: 2024-03-13 10:44:16 浏览: 140
好的,下面是 STM32 + LED流水灯的代码实现,你可以参考一下:
```c
#include "stm32f10x.h"
#define LED1_PIN GPIO_Pin_8
#define LED2_PIN GPIO_Pin_9
#define LED3_PIN GPIO_Pin_10
#define LED4_PIN GPIO_Pin_11
#define LED5_PIN GPIO_Pin_12
#define LED6_PIN GPIO_Pin_13
#define LED7_PIN GPIO_Pin_14
#define LED8_PIN GPIO_Pin_15
void GPIO_Config(void);
void Delay(__IO uint32_t nCount);
int main(void)
{
GPIO_Config();
while (1)
{
GPIO_SetBits(GPIOB, LED1_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED1_PIN);
GPIO_SetBits(GPIOB, LED2_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED2_PIN);
GPIO_SetBits(GPIOB, LED3_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED3_PIN);
GPIO_SetBits(GPIOB, LED4_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED4_PIN);
GPIO_SetBits(GPIOB, LED5_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED5_PIN);
GPIO_SetBits(GPIOB, LED6_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED6_PIN);
GPIO_SetBits(GPIOB, LED7_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED7_PIN);
GPIO_SetBits(GPIOB, LED8_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED8_PIN);
GPIO_SetBits(GPIOB, LED8_PIN | LED7_PIN | LED6_PIN | LED5_PIN | LED4_PIN | LED3_PIN | LED2_PIN | LED1_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED8_PIN | LED7_PIN | LED6_PIN | LED5_PIN | LED4_PIN | LED3_PIN | LED2_PIN | LED1_PIN);
GPIO_SetBits(GPIOB, LED8_PIN | LED7_PIN | LED6_PIN | LED5_PIN | LED4_PIN | LED3_PIN | LED2_PIN | LED1_PIN);
Delay(0xFFFFF);
GPIO_ResetBits(GPIOB, LED8_PIN | LED7_PIN | LED6_PIN | LED5_PIN | LED4_PIN | LED3_PIN | LED2_PIN | LED1_PIN);
}
}
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = LED1_PIN | LED2_PIN | LED3_PIN | LED4_PIN | LED5_PIN | LED6_PIN | LED7_PIN | LED8_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
代码中使用了STM32的GPIO库来控制LED的亮灭,通过循环依次点亮8个LED灯,最后再让所有的LED灯都闪烁两下。如果你需要更详细的解释,可以留言继续询问。