GPIO输出——使用固件库点亮LED灯

从上一节已经新建好的固件库开始编写

stepI: User中新建bsp_led.c,.h并添加到 K e i l 工程中 \textbf{stepI:}\text{User}中新建\text{bsp\_led.c,.h}并添加到Keil工程中 stepI:User中新建bsp_led.c,.h并添加到Keil工程中

bsp:board support package 板级支持包

stepII: 定义bsp_led.h \textbf{stepII:}定义\text{bsp\_led.h} stepII:定义bsp_led.h

注意: \textcolor{red}{\small 注意:} 注意:

#ifndef _BSP_LED_H //注意要有这两句话防止重复定义
#define _BSP_LED_H //注意要有则两句话防止重复定义
...
#endif 
stepIII: 定义bsp_led.c , 外设初始化 \textbf{stepIII:}定义\text{bsp\_led.c},外设初始化 stepIII:定义bsp_led.c,外设初始化

外设初始化四步:

  1. 打开GPIO时钟
  2. 定义一个GPIO初始化结构体
  3. 配置GPIO初始化结构体成员
  4. 调用GPIO初始化函数,将配置好的结构体成员参数写入寄存器
	void LED_GPIO_Config(void){
	
	///以下四步适合所有外设初始化///
	/*第一步:打开GPIO时钟*/
	
			//由于GPIO外设都接在AHB1上,AHB1时钟在RCC上
			//所以找到stm32f4xx_rcc.h和stm32f4xx_rcc.c文件
			//找到对应函数
			
			RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	
	/*第二步:定义一个GPIO初始化结构体*/
	
			//找到stm32f4xx_gpio.h文件

			//0.找到对应的初始化结构体
			GPIO_InitTypeDef GPIO_InitStruct;
	
			
	
	/*第三步:配置GPIO初始化结构体成员*/
	
			//1.配置结构体中的成员:PF6
			GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
	
			//2.配置模式:输出模式
			GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_OUT;
	
			//3.配置输出类型:推挽
			GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
			
			//4.配置输出电平:上拉
			GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;
	
	/*第四步:调用GPIO初始化函数,将配置好的结构体成员参数写入寄存器*/
	
			GPIO_Init(GPIOF, &GPIO_InitStruct);
			
			GPIO_ResetBits(GPIOF, GPIO_Pin_6);
			
}

代码在bsp_led.c中定义,在bsp_led.h中引用

# ifndef _BSP_LED_H//注意要有这两句话防止重复定义
#define  _BSP_LED_H//注意要有这两句话防止重复定义

#include "bsp_led.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"

void LED_GPIO_Config(void);

#endif /*_BSP_LED_H*/
stepIV: 填充main.c \textbf{stepIV:}填充\text{main.c} stepIV:填充main.c
#include "stm32f4xx.h"
#include "./LED/bsp_led.h"//注意这个路径

//软件延时
void Delay(uint32_t count){
	for(;count!=0;count--);
}


int main(void){
	
	LED_GPIO_Config();
	
	while(1){//闪烁效果
	GPIO_ResetBits(GPIOF, GPIO_Pin_6);
		
	Delay(0xffffff);	
		
	GPIO_SetBits(GPIOF, GPIO_Pin_6);
		
	Delay(0xffffff);
		
	
	}
}

注意调用时"./LED/bsp_led.h"路径

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暮光启行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值