六、MSP432飞控软件框架分析
飛控整個(gè)軟件代碼運(yùn)行在定時(shí)器調(diào)度模式,同時(shí)對(duì)各個(gè)外設(shè)模塊中斷優(yōu)先級(jí)進(jìn)行了合理設(shè)計(jì),確保程序運(yùn)行的實(shí)時(shí)性和穩(wěn)健性。其中對(duì)實(shí)時(shí)性、周期性要求高的比如:傳感器數(shù)據(jù)采集、姿態(tài)解算、慣性導(dǎo)航、控制等任務(wù),采用定時(shí)器調(diào)度的方式執(zhí)行,其它耗時(shí)且對(duì)周期性要求不高的子任務(wù)例如:電壓采集、按鍵掃描、顯示屏刷?新、地面站發(fā)送、加速度計(jì)標(biāo)定、磁力計(jì)標(biāo)定、遙控器行程標(biāo)定、參數(shù)保存等放在while(1)里面,利用中斷空閑的時(shí)間去執(zhí)行。
飛控上電復(fù)位后,單片機(jī)會(huì)首先根據(jù)官方啟動(dòng)文件定義來初始化堆棧指針、程序計(jì)數(shù)器、堆棧大小、中斷向量表等一系列過程,最后會(huì)運(yùn)行C函數(shù)分支入口_main,startup_msp432p401r_uvision.s內(nèi)容僅做了解就可以。
?
下面我們利用Understand軟件來對(duì)飛控程序框架進(jìn)行分析,首先看main主函數(shù)的調(diào)用框圖:
?
?
?
首先主函數(shù)main會(huì)調(diào)用硬件初始化函數(shù)HardWave_Init(),硬件初始化包括以下內(nèi)容:
?
?
?
主函數(shù)main執(zhí)行硬件初始化函數(shù)HardWave_Init()完畢后,會(huì)進(jìn)入進(jìn)入while(1)內(nèi)利用中斷空閑時(shí)間執(zhí)行按鍵掃描、OLED顯示、加速度計(jì)校準(zhǔn)、磁力計(jì)校準(zhǔn)、遙控器行程校準(zhǔn)、參數(shù)保存等。
?
?
?
?
定時(shí)器中斷任務(wù)調(diào)度主要執(zhí)行的任務(wù)為遙控器數(shù)據(jù)轉(zhuǎn)換、傳感器數(shù)據(jù)采集、姿態(tài)解算、光流速度融合、慣導(dǎo)GPS數(shù)據(jù)融合、SDK數(shù)據(jù)解析、控制、校準(zhǔn)檢測等。
?
?
?
?
?
?
?
? ??其它中斷服務(wù)函數(shù)如PPM中斷解析函數(shù)、串口數(shù)據(jù)解析函數(shù),當(dāng)外設(shè)模塊發(fā)送中斷信號(hào)后,會(huì)進(jìn)入對(duì)應(yīng)中斷函數(shù):
?
?
?
?
地面站數(shù)據(jù)解析
?
OPENMV1數(shù)據(jù)解析
?
OPENMV2數(shù)據(jù)解析
?
?
綜上所述,飛控程序運(yùn)行時(shí),存在三類主要的任務(wù):
1、定時(shí)器任務(wù)調(diào)度中斷函數(shù);
2、其它外設(shè)中斷函數(shù)(PPM解析、串口中斷等);
3、While(1)里面非實(shí)時(shí)函數(shù);
要想程序運(yùn)行穩(wěn)定、串口數(shù)據(jù)盡可能地不丟幀,PPM數(shù)據(jù)解析穩(wěn)定,必須要考慮每個(gè)任務(wù)實(shí)際用時(shí)開銷,對(duì)中斷優(yōu)先級(jí)進(jìn)行合理的設(shè)計(jì)。
?
在設(shè)計(jì)定時(shí)器任務(wù)調(diào)度中斷函數(shù)時(shí),需要對(duì)每一個(gè)子任務(wù)的時(shí)間開銷進(jìn)行統(tǒng)計(jì),且定時(shí)器中斷服務(wù)函數(shù)的調(diào)度周期要大于子任務(wù)的最大時(shí)間開銷之和。在進(jìn)行串口中斷優(yōu)先級(jí)設(shè)計(jì)時(shí),需要把握以下幾點(diǎn):
1、多個(gè)串口通訊時(shí),串口通訊波特率可以降低一點(diǎn)。
2、合計(jì)設(shè)計(jì)優(yōu)先級(jí),當(dāng)存在不同波特率通訊時(shí),通訊波特率高的串口中斷優(yōu)先級(jí)要高于波特率低的。
3、存在優(yōu)先級(jí)高于串口中斷的其它中斷任務(wù)時(shí),其它中斷任務(wù)的總的最大時(shí)間開銷也要考慮。
?
?
總結(jié)
以上是生活随笔為你收集整理的六、MSP432飞控软件框架分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ大揭秘
- 下一篇: ABAP字段增强