3、基本的软件框架

软件框架

本次项目使用RT_Thread,使用的是Nano,因为RTThread里面的组件太多了,好多东西使用不到,所以简单使用一个Nano+控制台就行。
在这里插入图片描述

1、硬件驱动

简单说一下,TIMER对应的是屏幕的背光控制,使用的是TIMER的PWM。
USB是作为代替串口的调试工具,如果使用串口转USB,势必要增加一个芯片,板子空间实在有限,就是用了USB作为调试口。后续作为程序升级的下载口。当然如果只是调试也可以使用Jlink内部的资源配合官方工具调试。
其余的应该都一目了然了。

使用的是cubemx 生产的硬件驱动。

2、功能模块
  • COMMUNICATE主要是是蓝牙、六轴、气压计的驱动程序
  • USB_DEBUG模块主要是用的是ST官方的ST_USBD_LIB库
  • TIMER主要是封装了一些PWM的操作函数
  • STROAGE主要是flash的一些驱动函数
  • SCREEN使用的LVGL
  • KEYBOARD使用的是MultiButton

GUI方面使用的是LVGL,UP主使用的版本号是6.1.2。正点原子的教程教的是6.0.2,我从官方下载的是7.0.0.刚开始移植的时候没注意看,吃了一个小亏。
按键使用了开源的稍微做了一点修改,将长按一直触发加了一个间隔时间。

3、业务逻辑

这一层东西要稍微多一点,将他们分开来一个个的说。

3.1、USB_DEBUG

要使用USB的CDC类作为前期的简单调试工作,就需要将USB的收发替换到RTT的控制台底层实现函数,在RTT官方给的是UART实现的控制台,所以需要自己来实现这些东西。在具体实现中,大致分为了两个任务来做,一收一发。

3.2、PW02

PW02是一个体积很小的蓝牙模块,使用AT协议,UART通信.命令都比较简单,使用了两个任务来做,一发一收。

3.3、SENSOR

传感器目前使用的是软件IIC,还有一些问题,等到大体软件功能做完后,下版将修改为硬件PCB,传感器主要分为两个,六轴和气压计,两个SENSOR分别使用两个任务来 控制,且两个任务互斥。

3.4、STROAGE

存储单独使用一个任务,在没有收到其他任务消息时,该任务处于挂起模式。

3.5、SCREEN

屏幕主要分为两个任务,一个是lvgl官方规定的周期任务lv_task_handler,另外一个是作为接受按键消息的任务,在接受按键消息任务中作出对应消息的动作。

3.6、KEYBOARD

按键任务,和用户交互的任务,根据不同的按键动作发送不同的消息发送给其他任务。

任务间的通信方式基本采用信号量和消息队列。这里的任务对应的是RTT里面的线程概念。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值