首页 > 编程语言 >用寄存器&HAL库完成LED流水灯程序

用寄存器&HAL库完成LED流水灯程序

时间:2022-10-13 18:25:56浏览次数:47  
标签:HAL Pin LED InitStructure Mode 寄存器 GPIO RCC

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);
}

2.剩余工作

标签:HAL,Pin,LED,InitStructure,Mode,寄存器,GPIO,RCC
From: https://www.cnblogs.com/blyat/p/16789189.html

相关文章