stm32实现流水灯 每0.5s切换一种状态 第0.5秒是 1 8 亮 随后是 2 7 再次是3 6 最后是 4 4 然后循环
时间: 2023-12-31 18:06:04 浏览: 53
基于stm32单片机的流水灯实现
好的,以下是基于STM32的代码实现:
```c
#include "stm32f10x.h"
void Delay(__IO uint32_t nCount) {
while(nCount--) {
}
}
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_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
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 | GPIO_Pin_8);
GPIO_ResetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
Delay(10000000);
GPIO_SetBits(GPIOB, GPIO_Pin_1 | GPIO_Pin_7);
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_8);
Delay(10000000);
GPIO_SetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_6);
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_8);
Delay(10000000);
GPIO_SetBits(GPIOB, GPIO_Pin_4);
GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
Delay(10000000);
}
}
```
上述代码中,我们使用了GPIOB口控制LED灯的状态。每隔0.5s,依次点亮GPIOB口的相应的IO口,实现了流水灯效果。
阅读全文