六、MSP432飞控软件框架分析

发布者:AngelicWhisper最新更新时间:2022-08-16 来源: csdn关键字:MSP432  飞控  软件框架 手机看文章 扫描二维码
随时随地手机看文章

飞控整个软件代码运行在定时器调度模式,同时对各个外设模块中断优先级进行了合理设计,确保程序运行的实时性和稳健性。其中对实时性、周期性要求高的比如:传感器数据采集、姿态解算、惯性导航、控制等任务,采用定时器调度的方式执行,其它耗时且对周期性要求不高的子任务例如:电压采集、按键扫描、显示屏刷 新、地面站发送、加速度计标定、磁力计标定、遥控器行程标定、参数保存等放在while(1)里面,利用中断空闲的时间去执行。


飞控上电复位后,单片机会首先根据官方启动文件定义来初始化堆栈指针、程序计数器、堆栈大小、中断向量表等一系列过程,最后会运行C函数分支入口_main,startup_msp432p401r_uvision.s内容仅做了解就可以。

下面我们利用Understand软件来对飞控程序框架进行分析,首先看main主函数的调用框图:

首先主函数main会调用硬件初始化函数HardWave_Init(),硬件初始化包括以下内容:

主函数main执行硬件初始化函数HardWave_Init()完毕后,会进入进入while(1)内利用中断空闲时间执行按键扫描、OLED显示、加速度计校准、磁力计校准、遥控器行程校准、参数保存等。

定时器中断任务调度主要执行的任务为遥控器数据转换、传感器数据采集、姿态解算、光流速度融合、惯导GPS数据融合、SDK数据解析、控制、校准检测等。

其它中断服务函数如PPM中断解析函数、串口数据解析函数,当外设模块发送中断信号后,会进入对应中断函数:

地面站数据解析

OPENMV1数据解析


OPENMV2数据解析

综上所述,飞控程序运行时,存在三类主要的任务:


1、定时器任务调度中断函数;


2、其它外设中断函数(PPM解析、串口中断等);


3、While(1)里面非实时函数;


要想程序运行稳定、串口数据尽可能地不丢帧,PPM数据解析稳定,必须要考虑每个任务实际用时开销,对中断优先级进行合理的设计。

在设计定时器任务调度中断函数时,需要对每一个子任务的时间开销进行统计,且定时器中断服务函数的调度周期要大于子任务的最大时间开销之和。在进行串口中断优先级设计时,需要把握以下几点:


1、多个串口通讯时,串口通讯波特率可以降低一点。

2、合计设计优先级,当存在不同波特率通讯时,通讯波特率高的串口中断优先级要高于波特率低的。

3、存在优先级高于串口中断的其它中断任务时,其它中断任务的总的最大时间开销也要考虑。

关键字:MSP432  飞控  软件框架 引用地址:六、MSP432飞控软件框架分析

上一篇:七、MSP432飞控快速二次开发入门教程
下一篇:如何使用Energia快速开发常见的MSP430/432LaunchPad

推荐阅读最新更新时间:2024-11-02 19:27

NO.13 利用Matlab对MSP432采集到的数据进行处理
  我们已经讲过MSP432开发板串口的应用。对于我们来说,我们很需要通过一些数据采集模块将采集到的数据发送到电脑内进行可视化操作。比如说我们的ADC模块,MPU6轴模块或者MAX30102心率采集模块,很多时候我们都需在开发的过程中可视化采集的结果,甚至于对数据进行滤波平滑等处理。这时候我们的Matlab就要出马了。Matlab在学校里讲了很多,无论是数学实验还是电磁场电磁波有些时候都是利用Matlab进行数据处理的。   在Matlab中可以方便的进行数据处理、绘图等操作。那么我们该如何使用好这一强大的数学软件来加速我们MSP432单片机的开发呢?假设我们需要利用Max30102进行心率采集,我们仅仅通过观察数据单元的值,
[单片机]
NO.13 利用Matlab对<font color='red'>MSP432</font>采集到的数据进行处理
又一家无人机公司关门倒闭,大疆最终将唱起独角戏?
今天Lily 无人机 两位创始人联名给预订用户发出一份邮件,承认公司无法按期发货,并将宣告公司关闭,将预定款返回到用户手中,这也正式宣告在无人机行业引来无数关注和争议,并多次跳票的这家明星无人机公司宣告倒闭。 三年前,一群刚从UC Berkley毕业的大学生写下“重新定义相机(Camera Reinvented)”的豪云壮志。2015年5月,与创始人同名的Lily无人机引爆整个科技圈,因其随手抛飞、防水、环绕飞行等在当时看来狂拽酷炫的性能而红极一时。随后的两年间,这间公司几经动荡,三次发货跳票,饱受质疑。   如今,时间到了Lily Robotics承诺的第三次发货时间,而预定用户两年苦等,却是Lily公司倒闭的消息。实际
[嵌入式]
MCU之MSP430和MSP432对比
MSP430 MCU世界里的一则神话,全球16位MCU最低功耗的标杆,过去20年来从未被超越,是工程师眼中当之无愧的低功耗之王。而早年TI隆重推出了基于ARM Cortex-M4F内核的32位低功耗MCU产品——MSP432。而这两者之间最显著的差异在哪里,下面跟小编一起来了解一下吧~ 这一功耗更低、性能更佳的MCU产品家族的诞生,是否会打破MSP430低功耗之王的神话?答案揭晓前,让我们先对二者进行一下比较。
[单片机]
MCU之MSP430和<font color='red'>MSP432</font>对比
MSP432 快速开发指南:如何利用 DriverLib 进行快速开发
1 前言 1.1 内容简介     MSP432P401R LaunchPad - Red 2.x (Red) (后续补上~) 1.2 快速链接 官方链接: MSP432DRIVERLIB: https://www.ti.com.cn/tool/cn/MSPDRIVERLIB MSP432P401R: https://www.ti.com.cn/product/cn/MSP432P401R 开发指南: MSP432 快速开发指南:如何安装 MDK 开发环境 MSP432 快速开发指南:如何安装板载仿真器驱动(XDS110) MSP432 快速开发指南:如何利用 DriverLib 进行快速
[单片机]
<font color='red'>MSP432</font> 快速开发指南:如何利用 DriverLib 进行快速开发
MSP432驱动舵机串口输出角度
MSP432驱动舵机串口输出角度 备注:我用的TI官方launchpad的MSP432P401R开发板 1、舵机需要50Hz基准的PWM,占空比是0.025~0.125.如何产生PWM,当然是定时器了。查看MSP432P401R数据手册,有4个定时器。 2、要算出详细的具体PWM频率,就需要知道系统的时钟,定时器的时钟。MSP432时钟来源比较复杂。具体可以看手册。(上TI官网下载) 5个时钟源,这里我选择HFXTCLK外部高速时钟(48MHz) 3、定时器的时钟来源可以有4种选择 这里我选择SMCLK时钟,定时器和串口都是SMCLK时钟源。 4、定时器具体配置代码 1 、定义PWM结构并初始化 Timer_A_
[单片机]
<font color='red'>MSP432</font>驱动舵机串口输出角度
msp432记录2-uart 与display的使用
sdk讲的非常清楚了,要注意的是display可以选用不同的类型进行输出,暂时先使用串口吧,还可以用lcd,Host,debug等输出类型,这个以后再慢慢探讨 UART API接口定义表 #include ti/drivers/UART.h #include ti/drivers/uart/UARTMSP432.h UARTMSP432_Object uartMSP432Objects ; //这个是外设的数据结构体,不能在应用程序中使用 unsigned char uartMSP432RingBuffer ; //波特率发生器 const UARTMSP432_BaudrateConfig uartMSP432
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved