github主页:https://github.com/snqx-lqh
gitee主页:https://gitee.com/snqx-lqh
本项目github地址:https://github.com/snqx-lqh/Stm32BalanceCar
本项目gitee地址:https://gitee.com/snqx-lqh/stm32-balance-car
欢迎交流

项目介绍

项目是基于STM32F103C8T6的平衡车设计,使用的是STM32CubeMx生成的HAL库相关和FreeRTOS相关,主要是为了学习FreeRTOS相关。

实物展示

在这里插入图片描述

硬件设计

如图所示,具体设计可以看开源文件。使用的是立创EDA绘制的

在这里插入图片描述

整体框架

主要是分成5个主要的任务。

control_task:这个任务主要是实现直立车的控制,MPU6050中断引脚触发STM32单片机的外部中断,然后使用任务通知通知控制任务执行对应的控制任务。

ui_task:这个任务主要是实现屏幕的显示,ADC读取相关,超声波模块数据的获取和显示。ADC读取使用的是DMA+多通道实现,超声波实现使用的是定时器输入捕获

ble_task:这个任务主要是实现蓝牙数据的读取,这里可以通过蓝牙收发控制小车。这里实现是串口接收到数据放入队列,然后任务读取队列中的数据并进行处理。

nrf_task:这个任务主要是实现nrf24l01的读取,这里可以通过nrf收发控制小车。该部分现在未作处理,可自行添加处理。

esp_task:这个任务主要是实现esp01的读取,这里可以通过wifi tcp收发控制小车。目前只实现了配置为AP模式控制。

其他说明

  • 由于同时使用了I2C1的引脚和SPI1重映射的引脚,发现会有冲突,所以最后只有I2C使用了硬件,SPI使用的是软件SPI
  • 屏幕和MPU6050使用的是同一个IIC总线,所以可能会存在一个使用IIC的时候被打断另外一个也想使用IIC,所以这里使用了互斥锁,使得一个在要使用IIC的时候会等另外一个器件协议总线使用完。
  • 蓝牙和wifi都是使用的串口,但是串口配置收发DMA的话,只能收,DMA发送只能发送一次,还没解决这个问题。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部