你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G0-BSP板级支持包

[复制链接]
STMCU小助手 发布时间:2022-10-25 22:45
STM32G0-BSP

f5b28fbcaefc45f6b7f587c1ab23e86c.png

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


依赖
STM32CubeMX
MDK-ARM Keil5
示例

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

$]~TQJ}2VW74KZX8N3QBURV.png

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

  1. mpu6050
  2. ├─BSP
  3. ├─LIB
  4. │  └─mpu6050
  5. ├─MDK-ARM
  6. ├─Drivers
  7. ├─Core
  8. ...
复制代码

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

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

其余文件均为STM32CubeMX自动生成

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

1、函数命名

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

  1. BSP_LED_Init();           // led初始化
  2. BSP_MPU6050_GetData();    // 获取mpu6050的数据
复制代码

2、类型命名

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

  1. // esp8266消息结构体
  2. typedef struct {
  3.   int len;
  4.   uint8_t *buf;
  5. } ESP8266_Msg;

  6. // led类型枚举
  7. typedef enum {
  8.   RED = 0,
  9.   GREEN,
  10.   BLUE
  11. } LED_Type;
复制代码

3、变量命名

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

  1. float bat_voltage = 0; // 电池电压
复制代码

4、宏和常量

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

  1. #define LED_NUM (2)    // led的数量
  2. const int LED_NUM = 2; // led的数量
复制代码

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

1、提供一个1ms的时基

  1. // stm32 systick 1ms 中断
  2. void SysTick_Handler(void)
  3. {
  4.   BSP_Time_IncTick(); // 时间片轮询时基
  5. }
复制代码

2、创建轮询任务

  1. int main(void)
  2. {
  3.   BSP_Time_Init(); // 时间片轮询初始化
  4.   while(1)
  5.   {
  6.     if(BSP_Time_CheckTick() ==1 )
  7.     {
  8.        // 500ms轮询任务,绿色led闪烁
  9.       if(BSP_Time_CheckSlice(500) == 1)
  10.       {
  11.         BSP_LED_Toggle(GREEN);
  12.       }
  13.       // 100ms轮询任务,更新hc-sr04超声测距模块的测量距离
  14.       if(BSP_Time_CheckSlice(100) == 1)
  15.       {
  16.         BSP_HCSR04_UpdateDist();
  17.       }
  18.       // 1000ms轮询任务,获取并打印hc-sr04超声测距模块的测量距离
  19.       if(BSP_Time_CheckSlice(1000) == 1)
  20.       {
  21.         float dist = BSP_HCSR04_GetDist();
  22.         printf("dist is %.2f cm\r\n",dist)
  23.       }
  24.     }
  25.   }
  26. }
复制代码

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


收藏 评论0 发布时间:2022-10-25 22:45

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版