网站首页 > 编程文章 正文
工程描述
QR-Board是一块基于“STM32G0微控制器”的四足机器人控制板。
四足机器人常用的硬件模块皆可接入这个控制板,例如:舵机、IMU、超声测距、WiFi、OLED等模块。
并且我还提供了完善的使用例程,能方便完成机器人等项目的功能的开发。
关于硬件
1.双MCU应用
①STM32G070CBT6微控制器
- 64MHz主频
- 128KB FLASH
- 36KB SRAM
- 支持SWD/UART程序下载
②ESP-01S WiFi模组
- 可基于Arduino编程或AT指令控制
- 支持UART程序下载
2.板载外设接口
- 8个光耦隔离的5V PWM舵机接口
- 3个飞特scs系列总线舵机接口
- 1个MPU6050模块接口
- 1个I2C OLED模块接口
- 1个HC-SR04超声测距模块接口
- 1个USB转TTL MicroUSB通信接口
- XT30公头或螺钉式端子DC5V~15V直流供电,支持ADC电压测量
- 支持I2C/UART通信,引出PWM/ADC/GPIO等富余接口
软件例程
1.软件工具
- STM32CubeMX
- MDK-ARM Keil5
2.板级支持包
提供12个板级支持包例程,位于bsp_demo文件夹下
3.工程文件结构
板级支持包的工程文件分为两大部分,一部分是由STM32CubeMX自动生成的,一部分是自己添加的,以mpu6050模块为例,其工程文件结构如下
mpu6050
├─BSP
├─LIB
│ └─mpu6050
├─MDK-ARM
├─Drivers
├─Core
...
/BSP目录下是自己编写的板级支持包文件,对外提供各类板载功能接口;
/LIB目录下是调用的外部库文件;
其余文件均为STM32CubeMX自动生成
4.命名约定
良好的编程命名规则有利于快速索引和匹配所需的对象,提高编程效率。该板级支持包编程命名规则与STM32HAL库类似,具体规则如下:
①函数命名
函数命名包括三部分,板级支持包+模块名称+函数具体动作,两两之间下划线分隔,函数具体动作采用大驼峰式命名法
BSP_LED_Init(); // led初始化
BSP_MPU6050_GetData(); // 获取mpu6050的数据
②类型命名
类型命名包括两部分,模块名称+类型名,两者之间下划线分隔,类型名采用大驼峰式命名法
// esp8266消息结构体
typedef struct {
int len;
uint8_t *buf;
} ESP8266_Msg;
// led类型枚举
typedef enum {
RED = 0,
GREEN,
BLUE
} LED_Type;
③变量命名
变量命名采用全小写,下划线分隔
float bat_voltage = 0; // 电池电压
④宏和常量
宏和常量采用全大写,下划线分隔
#define LED_NUM (2) // led的数量
const int LED_NUM = 2; // led的数量
5.轻量级时间片
该板级支持包提供了一个轻量、易用的时间片轮询功能,位于bsp_time模块中,使用方法如下
①提供一个1ms的时基
// stm32 systick 1ms 中断
void SysTick_Handler(void)
{
BSP_Time_IncTick(); // 时间片轮询时基
}
②创建轮询任务
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)
}
}
}
}
5.移植
利用STM32CubeMX生成工程,添加/BSP目录和对应的驱动文件,修改端口并添加驱动代码就能实现不同STM32微控制器的快速移植
设计图
文中所有资料与代码来源于此:https://oshwhub.com/yoohgc/QR-Board#P4
如果你欣赏这篇文章
欢迎点赞、关注、转发~
我会持续更新优质的开源项目!
猜你喜欢
- 2024-09-11 STM32使用keil编译时出现结构体未定义错误原因
- 2024-09-11 STM32按键中断应用实例(stm32多个按键中断)
- 2024-09-11 如何安装KEIL5,从零起步学习单片机STM32系列
- 2024-09-11 用keil5进行STM32项目开发时,那些让人摸不着头脑的程序
- 2024-09-11 如何使用keil 5 编写 51单片机 工程
- 2024-09-11 工程师实战:基于STM32 MCU的数字函数发生器
- 2024-09-11 如何使用STM32的片上调试接口进行软件调试和性能优化
- 2024-09-11 STM32 CubeMX生成的代码调试与优化技巧
- 2024-09-11 原来STM32单片机的开发如此的简单
- 2024-09-11 CubeMX与STM32的Keil开发基础(stm32cubeide keil)
你 发表评论:
欢迎- 最近发表
-
- 数据不丢失 从Windows 11的DEV版降级到正式版
- Win11学院:在Windows11 25905预览版中如何启用Dev Drive
- DEVC++的卸载(devcon卸载驱动)
- win11 dev 开发版 升级攻略完整版
- 最新Windows11+Windows10系统各种版本永久激活密钥以及下载链接
- 想学Python,却还记不住语法?神仙书籍 python背记手册双手奉上
- 如何用Python语言开发大型服务器程序
- 30天Python 入门到精通(python零基础入门到精通)
- 入门扫盲:9本自学Python PDF书籍,让你避免踩坑,轻松变大神!
- 学好Python需要看的4本书推荐(学python好用的书)
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)