板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统的一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好地运行于硬件主板

以按键点亮LED为例,可以理解为板极支持包为底层驱动(HAL)库提供可以访问硬件的接口,同时,当再用户应用层编写应用程序实现按下按键点亮LED时,要通过板级支持包知道板子上的硬件有那些功能可以实现,比如不需要了解GPIO的结构,只要知道调用某个方法可以实现某个功能就行
构建开发板上的LED的灯板级支持包
以CubeMX创建的项目为例
首先创建一个user文件夹,创建2个文件


以上步骤准备好,既可以开始构建板级支持包
要实现的功能:初始化GPIO,点亮,熄灭,翻转LED灯的状态,LED绿灯用到PB0,蓝灯用PB1,红灯用PB5. 编写代码主要涉及两个文件,主程序bsp_led.c,用来使能和初始化GPIO,配置引脚输出模式,bsp_led.h用于具体分配引脚的功能,最后在main.c文件中写入预期实现的功能并执行代码
一.bsp_led.c文件代码编写过程
1.添加头文件路径,确保右键可以正常跳转
//添加头文件路径
#include "./led/bsp_led.h"
2.初始化GPIO
//初始化GPIO
void LED_GPIO_Init(void)
{
}
2.1首先要使能GPIO,去stm32f1xx_hal_gpio.c文件查看使能方法

如图,使能GPIO要用到_HAL_RCC_GPIOx_CLK_ENABLE(),
//添加头文件路径
#include "./led/bsp_led.h"
//初始化GPIO
void LED_GPIO_Init(void)
{
__HAL_RCC_GPIOB_CLK_ENABLE();
}
使能之后,如果
3.配置引脚
(1)配置IO模式,要使用GPIO_InitTypeDef结构体,因此搜索GPIO_InitTypeDef查看这个结构体的用法,经过搜索,这些内容在stm32f1xx_hal_gpio.h文件中
(2)配置上拉,下拉等模式,要用到GPIO_InitTypeDef结构体,结构体内容如图所示

要实例化GPIO针脚,要查询GPIO_pins_define,以下查询了GPIO_pins_define,GPIO_mode_define,GPIO_pull_define,GPIO_SpeedDefine
GPIO_pins_define

GPIO_mode_define

GPIO_pull_define

GPIO_speed_define

本文详细介绍了如何为STM32开发板构建板级支持包(BSP),以实现LED灯的初始化、点亮、熄灭和状态翻转。内容涵盖从创建用户文件夹、编写bsp_led.c和bsp_led.h文件,到配置GPIO初始化结构体、使用HAL库函数控制LED状态的过程。示例中涉及的GPIO引脚包括PB0、PB1和PB5。
最低0.47元/天 解锁文章
403

被折叠的 条评论
为什么被折叠?



