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

  1. YSJ_FSM状态机软件框架分析

    基于状态机的软件框架好处 1. 有较好的代码框架 2. 相对与一般的操作系统,占用内存比较少,因为传统的操作系统每个任务必须给够栈,一般都要3K左右.而FSM始终用一个栈. 3. 避免了由于资源竞争引 ...

  2. framebuffer驱动详解2——framebuffer驱动框架分析

    以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 一.framebuffer驱动框架总览 1.驱动框架部分 (1)drivers/video/fbmem.c(主要的文件) 创建graphic ...

  3. 《多旋翼无人飞行器嵌入式飞控开发指南》里基于FreeRTOS的无人机软件框架

    <多旋翼无人飞行器嵌入式飞控开发指南>里基于FreeRTOS的无人机软件框架

  4. Flutter框架分析(五)-- 动画

    Flutter框架分析分析系列文章: <Flutter框架分析(一)-- 总览和Window> <Flutter框架分析(二)-- 初始化> <Flutter框架分析(三 ...

  5. 需求评审五个维度框架分析及其带来的启示-3-典型需求评审

    典型情境是指软件开发的常见情境,本文选择如下来进行分析: 1. 传统瀑布模型开发下的需求评审 2. 使用IEEE Std. 1028的需求评审 3. 敏捷开发下的需求评审 传统瀑布模型下的需求评审 对 ...

  6. TREK1000 评估套件的软件技术分析

    文章目录 TREK1000 评估套件 TREK1000评估套件的软件功能的分析 1.DecaRangeRTLS ARM Source Code Guide 的解读 1.2 软件的架构 1.3测距的精度 ...

  7. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

  8. Janus流媒体服务器框架分析

    Janus流媒体服务器框架分析 目录 webrtc多方通信架构 Janus流媒体服务器 1. webrtc多方通信架构 1. Mesh 方案 Mesh方案即多个终端之间两两进行连接,形成一个网状结构. ...

  9. OpenGL研究, GUI框架分析, 虚拟机比较, Win10历险记, WxWidget, uboot, WireShark

    http://antkillerfarm.github.io/ OpenGL研究 书籍 我手上其实有几本关于OpenGL的实体书,但是比较了一下之后,发现还是电子版的<OpenGL编程指南> ...

最新文章

  1. php计算属相,一个判断干支、属相和星座的php函数
  2. 数学工具WZgrapher
  3. 5G年终盘点:2018,意难平
  4. 最应该看的一本人工智能理论的书-神经网络于深度学习-目录
  5. centOS Redhat yum的配置
  6. Java多线程:易失性变量,事前关联和内存一致性
  7. qt中QMap与QMultimap用foreach遍历
  8. ibm招mysql_IBM-ETP实训之MySql基本命令总结
  9. 点击按钮无法触发ajax_前端 | Ajax 入门与实战
  10. 小明利用计算机软件绘制函数,2019年人大附中初二下期末模拟数学试题
  11. 阿根廷科尔多瓦省通过加密资产交易征税新法案
  12. format 用法及对齐
  13. Java对象转Map的解决办法_java对象转map怎么操作?map如何转化成Java对象?
  14. 列举1990年到2000年间的闰年
  15. pytorch学习笔记(八):PytTorch可视化工具 visdom
  16. c++中CString和String
  17. OpenCV和JavaCV--安装经验
  18. JAVA-制作飞机大战遇到的问题
  19. 三菱PLC的MC协议配置说明
  20. 软考网络管理员-华为设备命令学习笔记

热门文章

  1. 顶点着色器-经过的空间变换
  2. 【自习任我行】任务跟踪5
  3. 树莓派搭建服务器具体的教程(tomcat+mysql)
  4. ping原理 测试操作
  5. 单片机控制继电器实验
  6. 从微信云托管容器镜像的选择-alpine 说起
  7. jupyter notebook导入numpy 失败 报错:Original error was: DLL load failed while importing _multiarray_umath:
  8. D-link des-3828三层交换机入门设置
  9. MySQ5.7数据库-基准测试SQL语句分析
  10. python pip-什么是pip?Python新手入门指南