1.新建模板固件库以后,在E:\Keil5\project_\GPIO输出——使用固件库点亮LED\User文件夹中新建led文件夹,新建bsp_led.c和bsp_led.h文件。
2.bsp_led.h文件需要写一个条件编译
#ifndef _BSP_LED_H
#define _BSP_LED_H
#endif /*bsp_led.h*/`
以保证编译器不出错不重复编译
3.在用库编程的时候GPIO引脚已经定义好,直接拿来用即可。
LED红灯对应的的是GPIO_Pin_10,将其在bsp_led.h文件中宏定义为LED_R_GPIO_PIN,绿灯,蓝灯同理。
//GPIOH定义为
LED_R_GPIO_PORT,
//端口时钟
RCC_AHB1Periph_GPIOH定义为LED_R_GPIO_CLK
这样编译的好处是提高了程序的可移植性,在其他开发平台上同样适用。
4.1 创建void LED_GPIO_Config(void)函数
4.2 定义结构初始化,需要放在大括号开头(编译从由上至下,否则会报错),
GPIO_InitTypeDef GPIO_InitStruct;
4.3 开启时钟
RCC_AHB1PeriphClockCmd(LED_R_GPIO_CLK,ENABLE);//开启时钟
4.4 确定引脚号
GPIO_InitStruct.GPIO_Pin = LED_R_GPIO_PIN;
4.5 //确定输入输出(这里点亮LED为输出,设置为推挽输出)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
// 推挽输出
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
//上拉
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
//配置速度为50MHz
GPIO_InitStruct.GPIO_Speed = GPIO_Fast_Speed;
4.5 传入一个结构体初始化指针
GPIO_Init(LED_R_GPIO_PORT,&GPIO_InitStruct);//&取地址符号
5.main函数的创建:
#include "bsp_led.h"//包含led头文件
调用ResetBits函数
GPIO_ResetBits(LED_R_GPIO_PORT,LED_R_GPIO_PIN);
点亮LED
需要注意的点:Keil5编译时,会找不到bsp_led.h文件需要在Include Path中添加User文件目录路径。