本帖最后由 bkn1860-199212 于 2016-7-14 17:26 编辑
1. MCU资源使用情况在开发板申请阶段就已经对需要实现的大致功能有了明确的说明,所以MCU需要哪些硬件资源也就很明确了。下图是已经使用到的MCU硬件资源框图:
通过图中可以看到主要使用到是MCU资源主要有PWM、捕获和UART。 2. 软件流程图整个软件以FreeRTOS为基础,总共建立了3个Task,分别是:vUartTask,vMotorTask,hello_task。vUartTask主要用于UART3相关的串口通信协议处理,任务间隔执行时间为5ms。vMotorTask用于电机运行状态的控制,任务间隔执行时间100ms。hello_task用于测试,现在只用到了一个LED闪烁,间隔时间1s。下图是软件整体的运行流程图,其中还使用到了FTM0_IRQHandler和Uart3_IRQHandler。FTM0_IRQHandler用于在PTC3捕获到上升沿和下降沿时读取FTM0计数器的计数值,两次中断捕获到的计数值的差值再结合计数器的计数频率就可以计算得到脉冲的时间。Uart3_IRQHandler用于接收蓝牙模块发送给MCU的UART数据,将接收到的数据存储到接收数据队列里面。
Uart Task流程图: 3. 蓝牙协议这次DIY中需要蓝牙来传输的数据有: 1.手机APP发送给MCU的数据主要有:小车的运动方向前,后,左,右,停以及小车PWM占空比 2. MCU发送给手机的数据:测量到的障碍物距离 小车采用的通信协议如下,目前小车的方向控制、测距功能均已实现:
方向控制 APP发送给小车,小车不返回数据
头 命令 占空比 sum
停止 0xAA 0x00 0x00 sum
前进 0xAA 0x01 0x00 sum
后退 0xAA 0x02 0x00 sum
左 0xAA 0x03 0x00 sum
右 0xAA 0x04 0x00 sum 加速 0xAA 0x05 0x00 sum 减速 0xAA 0x06 0x00 sum
APP每间隔300ms查询一次前方障碍物距离
头 命令 预留 sum
查询命令 0xAA 0x20 0x00 0xCA
小车返回 0x55 0x00 0xXX sum 小车代码: |