六、MSP432飞控软件框架分析

2023-05-16

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

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

六、MSP432飞控软件框架分析 的相关文章

  • ROS学习(14)自定义四轮小车的ROS导航

    文章目录 前言一 创建编译功能包二 代价地图配置三 基本局部规划器配置四 创建导航包的启动文件五 导航仿真六 总结 前言 本篇为自定义四轮小车的ROS导航仿真 xff0c 与前面自定义机器人导航类似 该篇源码非原创 xff0c 特此说明 x
  • ROS学习(24)plugin插件

    文章目录 前言一 工作原理二 具体实现1 创建基类2 创建plugin类3 注册插件4 编译插件的动态链接库5 将插件加入ROS6 调用插件7 运行效果 前言 ROS中的插件就是可以动态加载的扩展功能类 ROS中的pluginlib功能包提
  • ROS学习(28)Web GUI

    文章目录 前言一 rosbridge suite元功能包二 roslibjs ros2djs ros3djs功能包三 tf2 web republisher功能包四 创建web应用五 使用web浏览器控制机器人 前言 ROS Web too
  • 参看了别人写的面试讲解

    转帖 ERP顾问的面试 新的一年就要开始了 xff0c 有不少的同行估计都在想着跳槽了 今天我就把自己的当面试官的感受给大家谈谈 xff0c 也许 xff0c 从中 xff0c 你可以掌握 ERP 实施顾问面试的技巧 在来年 xff0c 当
  • ROS2学习(1)ROS2简述

    文章目录 前言一 ROS1存在的问题二 什么是ROS21 ROS2的设计目标2 ROS2的系统架构3 ROS2的关键中间件 DDS4 ROS2中的通信模型5 ROS2的编译系统 前言 虽然众多开发者对ROS1进行了很多开发建设 xff0c
  • Qt之实现自定义控件的两种方式——提升法

    文章目录 前言一 需求二 实现1 新建项目2 自定义控件类3 提升4 效果 前言 可以通过Qt设计师拖拽原生控件进行界面开发 xff0c 但有时候原生控件不能满足项目需求 此时 xff0c 就需要实现自定义控件 Qt中实现自定义控件 xff
  • Qt之实现自定义控件的两种方式——插件法

    文章目录 前言一 需求二 实现1 新建项目2 自定义控件类3 编译插件4 拖拽使用 xff08 1 xff09 在designer exe中直接拖拽 xff08 2 xff09 在Qt Creator的设计师中直接拖拽 5 在项目中正常使用
  • Qt自定义控件——动态圆形进度条

    文章目录 前言一 需求二 实现1 自定义控件类2 提升3 效果 前言 本篇通过提升法实现一个动态圆形进度条 一 需求 自定义实现一个动态圆形进度条 xff0c 支持设置进度条颜色 目标值背景色 外边框背景色 中央圆环背景色 旋转角度及大小自
  • linux下可视化git工具git-cola安装与使用(SSH方式)

    一 git cola为何物 很多小伙伴 xff0c 特别喜欢使用TortoiseGit xff0c 该软件是做什么的 xff0c 就不用多说吧 奈何 xff0c TortoiseGit只有windows版 xff0c 这让在linux上开发
  • 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法 xff1a 布谷鸟搜索算法 附代码 文章目录 智能优化算法 xff1a 布谷鸟搜索算法 附代码1 算法原理2 算法结果3 参考文献4 Matlab代码 摘要 xff1a 谷鸟搜索算法 cuckoo search cs xff0
  • 基于布谷鸟优化的BP神经网络(预测应用) - 附代码

    基于布谷鸟优化的BP神经网络 xff08 预测应用 xff09 附代码 文章目录 基于布谷鸟优化的BP神经网络 xff08 预测应用 xff09 附代码1 数据介绍3 CS优化BP神经网络3 1 BP神经网络参数设置3 2 布谷鸟算法应用
  • 基于粒子群优化的BP神经网络(分类应用) - 附代码

    基于粒子群优化的BP神经网络 xff08 分类应用 xff09 附代码 文章目录 基于粒子群优化的BP神经网络 xff08 分类应用 xff09 附代码1 鸢尾花iris数据介绍2 数据集整理3 粒子群优化BP神经网络3 1 BP神经网络参
  • Arm Keil MDK v5.30版本官宣,快来下载!

    近日 xff0c Arm很高兴地宣布发布Arm Keil MDK v5 30 此版本新增了对Cortex M55处理器和CMSIS Build的支持 xff0c 更新包括Arm Compiler 6 14 xff0c CMSIS 5 7 0
  • ubuntu下访问串口

    前言 最近准备将windows上自动瞄准的程序移植到linux xff0c 第一步准备调试一下ubuntu下的串口 在网上搜到一个串口库 xff0c 于是就拿来调用 xff0c 最后调试成功 过程如下 xff1a 过程 1 下载Serial

随机推荐

  • 热备笔记实验

    早上突然断电 本来笔记本的插头就忘记插了 xff0c 电池没用多久就熄火 最纳闷的是接入电源后本机数据库竟然挂掉了 xff0c 嘿嘿 xff0c 正好试一试前几天应用的热备回复 以下是我的全程 C Documents and Setting
  • Android学习之AIDL添加Service权限

    参考 Android开发艺术探索 xff0c 书中提供了两种方法 第一种方法 xff1a 在onBind中验证 在服务端的AndroidManifest添加自定义权限 lt permission android name 61 span c
  • ADRC(自抗扰控制器)技术附Matlab代码框架

    自抗扰控制器 Auto Active Disturbances Rejec ion Controller ADRC 是韩京清学者提出的 xff0c 是一种继PID控制器后的一种新型的实用的控制技术 它不是一种独立的技术 xff0c 可以理解
  • git视频及对初学者的学习建议

    http herry2013git blog 163 com blog static 21956801120144810133569 http herry2013git blog 163 com blog static 2195680112
  • 迷你光流使用说明

    为了让你有兴趣往下学习 xff0c 先上个定点悬停效果视频给你欣赏一下吧 xff01 点击打开视频链接 首先 xff0c 简单介绍一下我使用的这款光流传感器 长宽高 xff1a 14x11x5mm xff0c 重量约0 6克 xff0c 工
  • Handler的使用方法(一)

    想花点时间谈谈Handler的使用方法 xff0c 是应为Handler的使用涉及到了线程类的使用 xff0c 也是在程序中用到了线程 xff0c 关于线程 xff0c 是个很重要的概念 xff0c 因为以后的嵌入式系统的应用开发往往在程序
  • STM32控制APM飞控(二)MAVLINK源码集成到stm32工程中

    MAVLINK协议源码集成到32工程中 一 MAVLINK代码转化为C语言源码文件 主要根据 http www cnblogs com lovechen p 5801679 html 作者 恒久力行 的方式 xff0c 我进行归纳简要说明
  • STM32控制APM飞控(三)MAVLINK整合并适配stm32串口的收发

    目录 stm32底层串口代码更改能收发MAVLINK协议包 一 在上一次移植好的工程基础上进行如下改动
  • STM32控制APM飞控(五)MAVLINK的C源码的解释及MAVLINK心跳包

    MAVLINK的C源码的解释及MAVLINK心跳包 一 MAVLINK转化成C源码后的文件及文件夹解释 用pathon2 7将从github官网下载下来的MAVLINK源码转换成c语言源码的文件夹如图 xff1a 解释 xff1a a xf
  • (一) 概述(概念、组件、架构、适用场景) | 普罗米修斯(Prometheus)

    什么是普罗米修斯 xff1f Prometheus是一个开源系统监控和警报工具包 xff0c 最初在 SoundCloud构建 自 2012 年成立以来 xff0c 许多公司和组织都采用了 Prometheus xff0c 该项目拥有非常活
  • 多值依赖

    多值依赖 xff1a 比如 xff1a 学校中某一门课程由多个教员讲授 xff0c 他们使用相同的一套参考书 每个教员可以讲授多门课程 xff0c 每种参考书可以供多门课程使用 我们可以用一个非规范化的关系来表示教员T 课程C 和参考书B
  • Docker启动Mysql问题汇总

    最近在学习Docker技术 xff0c 遇到了不少问题 xff0c 记录分享一下 xff0c 感觉有用的可以参考一下 xff1b 1 Docker使用Mysql docker run d v opt data mysql02 var lib
  • 静态库和动态库/文件描述符与文件指针/文件操作/重定向

    c语言阶段学习文件操作复习 1 打开文件 FILE fopen const char path const char mode path xff1a 需要打开的文件路径 xff0c 可以是绝对路径 xff0c 也可以是相对路径 mode x
  • 一种可行的STM32F103外设RTC使用方法

    前言 最近做的项目需要用RTC功能 xff0c 记录掉上电时间 然后就开始琢磨STM32的RTC 在使用的过程中出现各种问题 搞的很是头痛 几经折腾 xff0c 终于弄出一种稳定的使用方法 刚开始最大的问题就是掉电后时钟不走 xff0c 代
  • 路径规划算法初探

    前言 xff1a 真实世界中人类的路径规划是对记忆信息和实时感知信息综合分析的过程 xff0c 在虚拟技术中属于行为控制层级的技术 一 xff0c 机器人路径规划分类 xff1a 1 全局路径规划 xff08 环境完全已知 xff09 2
  • docker容器的备份和恢复

    将容器保存为镜像 root 64 1 0001 docker ps a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a40d46499c3a gitlab gitlab ce
  • 无名创新飞控开源地面站软件NGroundStation源码发布说明

    无名创新飞控开源地面站 NGroundStation 一 地面站开源初衷与下载链接 xff1a 无名创新飞控开源飞控地面站是无名小哥为广大自研飞控开发者 电子发烧友们专门开发的一款多功能上位机软件 xff0c 地面站功能涵盖 xff1a 飞
  • (枪版非官方正式发布)2020 年TI 杯大学生电子设计竞赛——绕障飞行器(D 题)

    原文档下载链接如下 xff1a 链接 xff1a https pan baidu com s 1bI0rW8hj7DJIx5N8qaZ wQ 提取码 xff1a 2zvx 虽然是非官方渠道 xff0c 但是题目可信度非常之高 xff0c 基
  • 无名创新开源飞控利用GPS数据航向对准开源代码

    无名创新开源飞控利用GPS数据航向对准开源代码 xff1a define acc sync cnt 5 void GPS Azimuth Update Method1 uint8 t flag if flag 61 61 0 return
  • 六、MSP432飞控软件框架分析

    飞控整个软件代码运行在定时器调度模式 xff0c 同时对各个外设模块中断优先级进行了合理设计 xff0c 确保程序运行的实时性和稳健性 其中对实时性 周期性要求高的比如 xff1a 传感器数据采集 姿态解算 惯性导航 控制等任务 xff0c