STM32F103C8T6的平衡小车设计(基于FreeRTOS框架)

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发送只能发送一次,还没解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年、潜行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值