基于stm32的流水灯程序
时间: 2023-09-14 21:04:20 浏览: 64
流水灯_基于STM32的流水灯_源码
以下是基于STM32的流水灯程序的基本代码:
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#define LED_NUM 8 //LED数量
GPIO_InitTypeDef GPIO_InitStructure;
void LED_Init(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟
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; //设置LED引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置GPIO速度
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB
}
int main(void) {
LED_Init(); //初始化LED
while (1) {
for (int i = 0; i < LED_NUM; i++) {
GPIO_SetBits(GPIOB, GPIO_Pin_0 << i); //点亮LED
for (int j = 0; j < 1000000; j++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_0 << i); //熄灭LED
}
for (int i = LED_NUM - 2; i >= 1; i--) {
GPIO_SetBits(GPIOB, GPIO_Pin_0 << i); //点亮LED
for (int j = 0; j < 1000000; j++); //延时
GPIO_ResetBits(GPIOB, GPIO_Pin_0 << i); //熄灭LED
}
}
}
该程序通过循环点亮和熄灭LED来实现流水灯效果。程序中使用了GPIO库和RCC库来控制LED的引脚和时钟。在循环中使用延时函数来控制LED的亮灭时间。程序可以根据需要进行修改和优化。
阅读全文