基于stm32f103c8t6的流水灯程序
时间: 2023-08-29 19:12:25 浏览: 108
基于STM32F103的流水灯
5星 · 资源好评率100%
好的,以下是基于stm32f103c8t6的流水灯程序的参考代码:
```c
#include "stm32f10x.h"
// 定义GPIO口
#define LED_GPIO_PORT GPIOC
#define LED_GPIO_CLK RCC_APB2Periph_GPIOC
#define LED_GPIO_PIN GPIO_Pin_13
void delay(uint32_t time) {
while(time--);
}
int main(void) {
// 开启GPIO口时钟
RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = LED_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
while (1) {
// 点亮第1个灯
GPIO_SetBits(LED_GPIO_PORT, LED_GPIO_PIN);
delay(1000000);
// 熄灭第1个灯,点亮第2个灯
GPIO_ResetBits(LED_GPIO_PORT, LED_GPIO_PIN);
GPIO_SetBits(LED_GPIO_PORT, GPIO_Pin_14); // 第2个灯
delay(1000000);
// 熄灭第2个灯,点亮第3个灯
GPIO_ResetBits(LED_GPIO_PORT, GPIO_Pin_14);
GPIO_SetBits(LED_GPIO_PORT, GPIO_Pin_15); // 第3个灯
delay(1000000);
// 熄灭第3个灯
GPIO_ResetBits(LED_GPIO_PORT, GPIO_Pin_15);
delay(1000000);
}
}
```
在这个程序中,我们使用了stm32f103c8t6的GPIO口控制LED灯的开关。
首先,我们需要定义LED所接的GPIO口。在这个例子中,我们使用了PC13、PC14、PC15三个GPIO口,分别接对应的LED灯。
然后,在`main()`函数中,我们需要开启GPIO口时钟,并对LED口进行初始化。
之后,我们使用一个循环不断地点亮、熄灭LED灯,实现流水灯效果。具体的实现方法是,每次点亮一个LED灯,延时一段时间后熄灭该灯并点亮下一个灯,如此循环。
最后,记得编译并下载程序到stm32f103c8t6开发板上进行测试。
阅读全文