嵌入式软件项目介绍

基于stm32 的语音计算器

项目介绍

(实现功能)这个项目主要实现了基于stm32单片机的一个语音计算器。

(主要结构)主要由三大部分构成,首先是整个系统控制程序,因为存在语音检测、按键检测的多个任务需要并发运行,所以用多定时器中断来模拟线程的时间片轮转调度机制,实现了多任务并发运行。第二部分则是语音特征的提取,项目主要是提取MFCC系数作为主要特征,最后语音识别采用的是动态时间规整方法,主要思想是动态规划。

时间片轮转机制的实现

设置多个定时器,每个定时器来模拟不同长度的时间片,时间片越小则任务优先级越高,那么依据不同的任务优先级,设置多个任务队列,每次定时器中断触发,那么就会轮转该定时器下的任务。

基于CAN 通信的Mabot 传感器

项目介绍

(实现功能)该项目是实验室老师接的一个项目,主要是完成玩具机器人的各个传感器驱动开发,以及实现基于can通信的软件包功能。

(主要结构)关于驱动这块,我主要负责超声波传感器的stm32驱动开发,并在基础上实现了测距功能。第二部分是关于软件包在线升级这块,因为玩具机器人的传感器的驱动需要更新的话,一个一个传感器下载更新,太麻烦。由实验室学长主导,参与设计了基于can通信的控制通信协议,在同一can总线上,发布各个传感器软件包,实现在线批量升级。超声波模块的引导装载程序这块是由我负责实现。

怎么实现在线程序包升级?

首先一个程序的运行是这样的,首先从中断向链表取出复位中断向量的地址,跳转到复位中断函数,复位中断函数会跳转到main函数入口开始执行。

那么我们设计引导程序,首先跳转到main函数后,判断是否执行APP跳转标志,没有则等待APP数据包,那么通过接收can通信数据并写入空闲的flash,后执行跳转函数,也就是跳转到APP程序的复位中断向量表,执行跳转APP程序main的入口,从而运行APP程序。

posted @ 2022-08-01 11:07  xfw121  阅读(571)  评论(0)    收藏  举报