1.程序设计思路
我们首先要初始化LED灯的接口并配置时钟。选择LED_Init 三个目标端口的模式为推挽输出,默认输出1,这样就完成了初始化端口。接下来我们创建一个.h文件用于声明我们在.c文件内编写的函数名,LED_Iit(void),该函数如我们在.c文件中已经提到他的作用是LED灯的接口初始化,我们在.h文件中声明该函数这样在main程序中就可以方便调用。
led.h接下来是main程序 的编写,首先我们先理清思路,我们已经在.h文件中和.c文件中初始化时钟初始化接口,也已经设置好了相应管脚管口对应的端口号,设置好了速度。根据题目要求是我们做一个流水灯,需要三种颜色交替闪烁,交替闪烁的实现在电路中就是对应高低电平的配置,接高电平3.3V就是亮,低电平0V就是熄灭,同时三种颜色闪烁之间有间隔需要设置一个延时时间,这个根据自己的需要可长可短,思路明确我们就可以编写main程序了。可以看到在main程序中先是调用了led.h文件对时钟和接口初始化,接下来是一个循环,循环体中GPIO_SetBits先给GPIOA管脚的0号端口高电平3.3V亮,经过一秒时间的延时GPIO_ResetBits让GPIOA管脚0端口熄灭,同样是1s延时,接下来变为GPIOB和GPIOC的相应端口号,相同的操作,持续循环该程序。
#include "led.h"
void LED_Init(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}