跑马灯实验的工程模板以及具体的工程模板修改步骤我这里就不说了,正点原子教学视频里讲的已经非常清楚了,在这里主要用到的3个文件以及文件中相关函数及寄存器的作用在这里我以注释的形式给出。
1.led.h
#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED端口定义
#define LED0 PFout(9) // DS0
#define LED1 PFout(10) // DS1
void LED_Init(void);//初始化
#endif
2.led.c
这里的步骤为:使能GPIO时钟->调用GPIO_init(a,b),b参数需要自己定义以及配置相关寄存器,切勿忘记使能时钟。
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//切勿忘记使能GPIO是时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //设置为输出模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉浮空
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度选择为100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);//Pin9 | Pin10全部置为高电平
}
3.main.c
main函数在初始时要初始化delay(这里规范化为168)->初始化LED->循环控制跑马灯
#include "led.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"
int main()
{
delay_init(168);
LED_Init();
while(1) {
GPIO_ResetBits(GPIOF, GPIO_Pin_9); //Pin9亮起
GPIO_SetBits(GPIOF, GPIO_Pin_10); //Pin10熄灭
delay_ms(500); //延时
GPIO_ResetBits(GPIOF, GPIO_Pin_10); //Pin10亮起
GPIO_SetBits(GPIOF, GPIO_Pin_9); //Pin9熄灭
delay_ms(500); //延时
}
}