STM32G0-BSP板级支持包

STM32G0-BSP

在这里插入图片描述

STM32G0-BSP是基于STM32G070CBT6微控制器的板级支持包,它提供了一系列常见硬件模块、外设的使用例程,提供了一种轻量易用的时间片轮询结构,方便用户快速驱动模块、调用板载功能。

bilibili: STM32G0板级支持包功能视频演示
Github: STM32G0-BSP

依赖

  • STM32CubeMX
  • MDK-ARM Keil5

示例

提供以下板级支持包和对应的使用例程

序号工程名称工程描述
1ledRGB三色LED灯板级支持包,支持LED亮、灭、电平翻转、流水灯
2key基于multi_button的按键板级支持包,支持按键的单击、双击、长按
3pwmbuzzer无源蜂鸣器板级支持包,由PWM驱动发声,支持蜂鸣器的开、关、发声频率设置
4pwmservoPWM舵机板级支持包,由周期20ms(高电平占0.5ms至2.5ms)的PWM驱动,支持8路舵机的0°至180°的输出
5scservo飞特SCS系列总线舵机板级支持包,由串口USART2驱动
6smservo飞特SMS系列总线舵机板级支持包,由串口USART2驱动
7mpu6050MPU6050模块板级支持包,由模拟I2C驱动,支持三轴陀螺仪和加速度计原始数据、模块温度、基于DMP解算的欧拉角等数据的获取
8stm32flashSTM32内部FLASH板级支持包,支持STM32内部FLASH的按页读写
9rttrt-thread板级支持包,提供静态和动态线程的创建示例
10battery电池板级支持包,采用ADC+DMA获取锂电池电压
11esp8266ESP8266模块板级支持包,ESP8266模块通过串口USART1与STM32连接并发送数据,STM32采用DMA+IDLE解析来自ESP8266模块的数据帧
12hcsr04HC-SR04模块板级支持包,采用PWM输入捕获和状态机实现超声测距信息的获取

文件结构

板级支持包的工程文件分为两大部分,一部分是由STM32CubeMX自动生成的,一部分是自己添加的,以mpu6050模块为例,其工程文件结构如下

mpu6050
 ├─BSP
 ├─LIB
 │  └─mpu6050
 ├─MDK-ARM 
 ├─Drivers 
 ├─Core
 ... 

/BSP目录下是自己编写的板级支持包文件,对外提供各类板载功能接口;

/LIB目录下是调用的外部库文件;

其余文件均为STM32CubeMX自动生成

命名约定

良好的编程命名规则有利于快速索引和匹配所需的对象,提高编程效率。该板级支持包编程命名规则与STM32HAL库类似,具体规则如下:

1、函数命名

函数命名包括三部分,板级支持包+模块名称+函数具体动作,两两之间下划线分隔,函数具体动作采用大驼峰式命名法

BSP_LED_Init();           // led初始化
BSP_MPU6050_GetData();    // 获取mpu6050的数据

2、类型命名

类型命名包括两部分,模块名称+类型名,两者之间下划线分隔,类型名采用大驼峰式命名法

// esp8266消息结构体
typedef struct { 
  int len;
  uint8_t *buf;
} ESP8266_Msg;

// led类型枚举
typedef enum { 
  RED = 0,
  GREEN,
  BLUE
} LED_Type;

3、变量命名

变量命名采用全小写,下划线分隔

float bat_voltage = 0; // 电池电压

4、宏和常量

宏和常量采用全大写,下划线分隔

#define LED_NUM (2)    // led的数量
const int LED_NUM = 2; // led的数量

轻量级时间片

该板级支持包提供了一个轻量、易用的时间片轮询功能,位于bsp_time模块中,使用方法如下

1、提供一个1ms的时基

// stm32 systick 1ms 中断
void SysTick_Handler(void)
{
  BSP_Time_IncTick(); // 时间片轮询时基
}

2、创建轮询任务

int main(void)
{
  BSP_Time_Init(); // 时间片轮询初始化
  while(1)
  {
    if(BSP_Time_CheckTick() ==1 )
    {
       // 500ms轮询任务,绿色led闪烁
      if(BSP_Time_CheckSlice(500) == 1)
      {
        BSP_LED_Toggle(GREEN);
      }
      // 100ms轮询任务,更新hc-sr04超声测距模块的测量距离
      if(BSP_Time_CheckSlice(100) == 1)
      {
        BSP_HCSR04_UpdateDist();
      }
      // 1000ms轮询任务,获取并打印hc-sr04超声测距模块的测量距离
      if(BSP_Time_CheckSlice(1000) == 1)
      {
        float dist = BSP_HCSR04_GetDist();
        printf("dist is %.2f cm\r\n",dist)
      }
    }
  }
}

移植

利用STM32CubeMX生成工程,添加/BSP目录和对应的驱动文件,修改端口并添加少许驱动代码就能实现不同STM32微控制器的快速移植。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32G4系列是意法半导体(STMicroelectronics)推出的一款32位微控制器系列产品,它具有高性能、低功耗和丰富的外设功能。对于STM32G4系列的支持安装,可分为以下几个步骤。 首先,需要下载并安装STM32CubeIDE开发环境。STM32CubeIDE是一款基于Eclipse的集成开发环境,它可以帮助开发者更好地开发和调试STM32微控制器应用程序。 其次,需要下载相应的STM32G4支持。ST官方提供了针对不同型号的STM32G4微控制器的支持,开发者可以在ST官方网站上找到并下载相应的支持。 接着,将下载好的支持导入到STM32CubeIDE中。在STM32CubeIDE的工具栏中选择File->Import,然后选择General->Existing Projects into Workspace,找到下载好的支持文件夹,将其导入到工作空间中。 然后,需设置工程配置。在导入支持后,需要选择相应的工程并右键点击选择Properties,然后在"Build"选项中,根据实际需求进行相关配置。例如,选择相应的编译器,设置编译选项等。 最后,编译和下载代码。在进行相关配置后,可以编写代码并进行编译。如果一切顺利,编译成功后就可以将代码下载到STM32G4微控制器中进行调试和运行。 需要注意的是,以上步骤仅为一般的流程,具体操作可能会有所差异。如果遇到问题,可以参考官方文档或者在官方社区寻求帮助。同时,建议在开始使用之前,先熟悉一下相关的开发文档和教程,这样能更好地利用STM32G4系列的强大功能进行开发工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值