wordpress著名app寧波免費(fèi)seo排名優(yōu)化
1. PH47框架邏輯層全局引用對象
全局引用 | 功能簡介 | 快速訪問 |
bus | 數(shù)據(jù)總線系統(tǒng)功能實(shí)現(xiàn),如對總線數(shù)據(jù)項讀寫操作等 | 數(shù)據(jù)總線bus |
drv | 驅(qū)動層功能實(shí)現(xiàn),如飛控板相關(guān)的各種硬件傳感器設(shè)備進(jìn)行操作等 | 驅(qū)動層drv |
mcu | 對mcu的片內(nèi)接口及設(shè)備進(jìn)行操作 | 驅(qū)動層mcu |
frm | 框架層基本功能實(shí)現(xiàn) | 框架層frm |
frm.led | 對飛控板狀態(tài)指示led進(jìn)行操作 | |
frm.mutipilot | 多飛控板協(xié)作功能實(shí)現(xiàn) | |
core | 框架層高級功能實(shí)現(xiàn) | |
core.mavlink | mavlink 協(xié)議對地遙測通訊功能實(shí)現(xiàn) | mavlink |
core.airlink | mavlink協(xié)議空對空遙測通訊功能實(shí)現(xiàn) | |
core.para | 對機(jī)載參數(shù)進(jìn)行讀寫及存儲等操作 | 機(jī)載參數(shù)系統(tǒng) |
core.wp | 對導(dǎo)航航點(diǎn)進(jìn)行讀寫及修改操作 | |
algo | 算法層功能實(shí)現(xiàn) | |
app | 應(yīng)用層功能實(shí)現(xiàn) | 應(yīng)用層開發(fā) |
2.?PH47框架全局函數(shù)及變量
全局狀態(tài)變量操作相關(guān)函數(shù)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
全局狀態(tài)變量狀態(tài)操作 | gSetStatus() gGetStatus() | 全局狀態(tài)變量 |
設(shè)置全局錯誤、警告 | gSetGlobalState() | |
設(shè)置飛控板狀態(tài)GPIO 測試Pin | gTrigleTestPin() |
全局時間相關(guān)功能函數(shù)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
獲取當(dāng)前ms時間 | gGetMills() | 時間相關(guān) |
獲取當(dāng)前ms時間,精確到us | gGetMills_f() | |
獲取前一時刻到當(dāng)前的ms時間間隔 | gGetTmUsage_ms() | 獲取時間間隔 |
獲取前一時刻到當(dāng)前的us時間間隔 | gGetTmUsage_us() | |
ms 級別延時,非阻塞,但依賴于FreeRtos啟動 | osDelay() | |
ms 級別延時,阻塞,不依賴FreeRtos | HAL_Delay() | |
us 級別延時,阻塞 | gDelay_us() |
全局調(diào)試及信息顯示相關(guān)函數(shù)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
調(diào)試信息輸出宏(隊列方式,依賴于框架啟動完成) | TRACE() | 調(diào)試輸出 |
真值確認(rèn)宏 | ASSERT() | |
調(diào)試串口字符串輸出(中斷方式) | gPrintf() | |
調(diào)試串口以及CSS狀態(tài)窗口信息輸出 | gShowInfo() | |
格式化字符串生成 | gFormat() |
3. 數(shù)據(jù)總線操作(通過bus引用)
驅(qū)動層常用功能函數(shù)(通過drv或mcu引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
設(shè)置總線數(shù)據(jù)項的數(shù)值 | Set() | 數(shù)據(jù)總線 |
設(shè)置當(dāng)前總線數(shù)據(jù)為安全總線 | SetSafe() | |
獲取總線數(shù)據(jù)項數(shù)值 | Get() | |
獲取總線數(shù)值的引用 | GetRef() | |
獲取總線數(shù)據(jù)項最近一次被 設(shè)置時刻的時間戳(ms) | GetTimeStamp_ms() GetTmStampDec_us() | |
獲取總線數(shù)據(jù)項最近兩次被設(shè)置時刻間的時間間隔 | GetDt2Prev_us() GetDt2Prev_ms() |
驅(qū)動層功能函數(shù)大多數(shù)為MCU接口驅(qū)動,一般用于飛控板硬件層面驅(qū)動程序的開發(fā)。目前代碼框架已支持的傳感器硬件輸出數(shù)據(jù)均已納入到數(shù)據(jù)總線體系,用戶可直接使用。初級開發(fā)者無需過多關(guān)心。
但是驅(qū)動層也提供了少量功能函數(shù)供各層級的開發(fā)者使用,最常用的是Pwm輸入輸出相關(guān)函數(shù)。
Pwm操作函數(shù)(通過drv._pPwm引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
獲取當(dāng)前輸入通道的Pwm脈沖寬度(us) | GetPwmIn() | |
設(shè)置當(dāng)前Pwm輸出通道的 Pmw脈沖寬度(us) | SetPwmWidth(); | |
使能當(dāng)前Pwm輸出控制 | EnablePwmOut() |
Stm32 ADC 電壓測量函數(shù)(全局函數(shù))
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
獲取當(dāng)前控制板電壓測量通道的電壓數(shù)值 (測量范圍0-3.3v, 單位:0.01v。測量電壓必須在控制板外進(jìn)行分壓處理,否則會燒毀控制板!) | gGetBoardVol() | |
獲取當(dāng)前電池電壓測量通道的電壓數(shù)值 (測量范圍0-3.3v, 單位:0.01v。測量電壓必須在控制板外進(jìn)行分壓處理,否則會燒毀控制板!) | gGetBatteryVol() |
驅(qū)動層串口常用操作(通過指針drv._pUsartXxx引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
發(fā)送數(shù)據(jù)環(huán)形緩沖區(qū)對象,FIFO | CPhSerial._RingBuf_Snd | |
接收數(shù)據(jù)環(huán)形緩沖區(qū)對象,FIFO | CPhSerial._RingBuf_Rev | |
設(shè)置串口波特率 | SetBaudRate() | |
以中斷方式將字符串寫入串口發(fā)送環(huán)形緩沖區(qū)并立即發(fā)送。 | WriteData_INT() | |
以DMA方式將直接發(fā)送字符串(不寫入發(fā)送環(huán)形緩沖區(qū))。 | WriteData_DMA() | |
將一個字符加入串口發(fā)送環(huán)形緩沖區(qū)(但不發(fā)送) | Add2SndBuf() | |
將字符串加入串口發(fā)送環(huán)形緩沖區(qū)(但不發(fā)送) | Add2SndBuf_DMA() | |
以中斷方式發(fā)送當(dāng)前環(huán)形發(fā)送緩沖區(qū)中的數(shù)據(jù) | StartSend_IT() | |
以DMA方式發(fā)送當(dāng)前環(huán)形發(fā)送緩沖區(qū)中的數(shù)據(jù) | StartSend_DMA() | |
獲取當(dāng)前接收環(huán)形緩沖區(qū)當(dāng)中的數(shù)據(jù)字節(jié)數(shù) | GetRevCount() | |
讀取當(dāng)前接收環(huán)形緩沖區(qū)當(dāng)中的一個字節(jié)數(shù)據(jù),讀取成功后將該直接數(shù)據(jù)移出環(huán)形緩沖區(qū) | GetRevByte() | |
判斷當(dāng)前串口DMA是否忙碌 | IsDmaBusy() |
驅(qū)動層SPI接口常用操作(通過指針mcu. _pSpiXxx引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
設(shè)置當(dāng)前spi接口速率 | SetSpeed() | |
寫入1字節(jié)數(shù)據(jù)到spi | WriteByte() | |
從spi接口讀取1字節(jié)數(shù)據(jù) | ReadByte() | |
寫入多個字節(jié)數(shù)據(jù)到spi | SpiTran() | |
從spi接口讀取多個字節(jié)數(shù)據(jù) | SpiReceive() | |
同時向spi接口中寫入并讀取多個字節(jié)數(shù)據(jù) | SpiTranRev() |
驅(qū)動層I2C接口常用操作(通過指針mcu._pI2C_Xxx引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
ST, 產(chǎn)生 IIC 起始信號 | IIC_Start() | |
SP, 產(chǎn)生 IIC 停止信號 | IIC_Stop() | |
等待應(yīng)答信號到來, 返回值:應(yīng)答等待時間(us) | IIC_Wait_Ack() | |
產(chǎn)生ACK應(yīng)答 | IIC_Ack(void) | |
不產(chǎn)生ACK應(yīng)答 | IIC_Nack() | |
向I2C寫入一個字節(jié), 并返回從機(jī)有無應(yīng)答 | IIC_Send_Byte() | |
從I2C讀取一個字節(jié) | IIC_Read_Byte() | |
讀取指定ID的I2C設(shè)備上指定地址的1字節(jié)數(shù)據(jù) | ReadOneByte() | |
向指定ID的I2C設(shè)備上指定地址寫入1字節(jié)數(shù)據(jù) | WriteOneByte() | |
讀取指定ID的I2C設(shè)備上從指定地址開始的多個字節(jié)數(shù)據(jù) | ReadBytes() | |
向指定ID的I2C設(shè)備上從指定地址寫入多個字節(jié)數(shù)據(jù) | WriteBytes() |
?4. 框架層常用功能函數(shù)(通過frm引用)
框架層基本功能函數(shù)(通過frm引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
讀取全局狀態(tài)變量數(shù)值 | SetStatus() | 框架層函數(shù) |
置全局狀態(tài)變量數(shù)值 | GetStatus() | |
初始化Post 消息 | InitPostMsg() | |
以Post方式發(fā)出一個消息 | PostMsg() | |
檢查是否有特定消息翼Post方式發(fā)出 | CheckPostMsg() | |
對以Send方式發(fā)出的消息進(jìn)行處理(回調(diào)函數(shù)) | HandleMessage() | |
當(dāng)前是否工作于HIL模式 | IsHilSimulateMode() | |
當(dāng)前是否工作于真實(shí)傳感器模式 | IsSensorMode() | |
設(shè)置當(dāng)前飛行模式 | SetFlightMode() | |
對當(dāng)前飛控實(shí)施指令控制 | FlightControl_Ins() | |
處理來自GCS的上行mavlink控制命令 (回調(diào)函數(shù)) | CommonMsgProc_Gcs() | |
處理來自其他飛控板的mavlink控制命令 (回調(diào)函數(shù)) | CommonMsgProc_Air() | |
向GCS下行發(fā)送mavlink數(shù)據(jù)幀(回調(diào)函數(shù)) | MavMsgSnd2GCS_Slow() | |
所有參數(shù)上傳完畢事件響應(yīng)函數(shù)(回調(diào)函數(shù)) | Event_ParaUpComplete() | |
設(shè)置對GCS下行mavlink數(shù)據(jù)幀的發(fā)送速率 | SetMsgRate_Gcs() |
框架層基本子引用:狀態(tài)指示LED控制(通過frm.led引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
翻轉(zhuǎn)閃爍指示 LED | Led_Toggle() | |
以閃爍編碼方式進(jìn)行狀態(tài)顯示(非阻塞) | Led_ShowStatus() |
框架層基本子引用:多飛控板協(xié)作(通過frm. mutipilot引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
改變當(dāng)前調(diào)試串口(多功能串口)的用途 | ChangeConsoleMode() | |
ChangeFlightCtrlRights() | ||
MavMsgSnd2Airlink() | ||
DP_MasterSnd2Slaver() | ||
DP_SlaverSnd2Master() | ||
DP S_ParseMasterMsg() | ||
DPM_ParseSlaverMsg() |
5. 框架層擴(kuò)展功能及函數(shù)(通過core引用)
框架層重要成員變量(通過core引用)
功能描述 | 變 ?量 | 快速訪問 |
PH47框架初始化全部完成標(biāo)志 | blSysInitCompleted |
框架層擴(kuò)展功能函數(shù)(通過core引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
讀取全局狀態(tài)變量數(shù)值 | SetStatus() | |
置全局狀態(tài)變量數(shù)值 | GetStatus() | |
檢查是否有特定消息翼Post方式發(fā)出 | CheckPostMsg() | |
當(dāng)前是否工作于真實(shí)傳感器模式 | IsSensorMode() | |
獲取當(dāng)前GPS精度狀態(tài) | GetGpsStatus() | |
設(shè)置當(dāng)前GPS精度狀態(tài) | SetGpsStatus() | |
設(shè)置全局錯誤狀態(tài)代碼 | SetGlobalState() | |
設(shè)置全局警告狀態(tài)代碼 | SetGlobalError() | |
發(fā)送用戶自定義mavlink數(shù)據(jù)幀 | SendUserDefData() |
框架層擴(kuò)展子應(yīng)用:對地遙測通訊(通過core.mavlink引用)
由于整個mavlink通訊系統(tǒng)已經(jīng)進(jìn)行了完善的封裝,故初中級用戶在二次開發(fā)過程中涉及到遙測通訊功能函數(shù)很少,主要集中在下行指令或狀態(tài)發(fā)送方面。在其它方面,用戶只需要專注于數(shù)據(jù)總線操作,從總線中讀取或?qū)懭霐?shù)據(jù)即可。
對于高級開發(fā)二次用戶,關(guān)于遙測系統(tǒng)功能函數(shù)具體可參見代碼實(shí)現(xiàn)文件\DevStudio\Frame\Core\MavlinkWrap.h。
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
向GCS下行發(fā)送字符串信息 | AddMsg_StatusText() | Mavlink |
向GCS下行發(fā)送帶7個參數(shù)的長控制命令 | AddMsg_Command() | |
向GCS下行發(fā)送帶2個參數(shù)的短控制命令 | AddMsg_UserDefData() |
框架層擴(kuò)展子應(yīng)用:機(jī)載參數(shù)系統(tǒng)(通過core.para引用)
與遙測系統(tǒng)類似,機(jī)載參數(shù)系統(tǒng)的讀取、存儲、更新及傳送機(jī)制也進(jìn)行了完善的封裝,用戶只需在需要時調(diào)用下述函數(shù)讀取或?qū)懭雲(yún)?shù)即可,剩下所有工作由框架負(fù)責(zé)完成。
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
獲取機(jī)載參數(shù)數(shù)值 | Get() | 機(jī)載參數(shù) |
設(shè)置機(jī)載參數(shù)數(shù)值 | Set() |
框架層擴(kuò)展子應(yīng)用:航點(diǎn)存儲系統(tǒng)(通過core.wp引用)
功能描述 | 對應(yīng)函數(shù) | 快速訪問 |
讀取航點(diǎn)數(shù)據(jù) | ReadWP() | |
寫入航點(diǎn)數(shù)據(jù) | WriteWP() | |
獲取航點(diǎn)數(shù)量 | GetWpCounts() | |
讀取航點(diǎn)的位置信息 | ReadWpLoc() |
6. ???????算法層功能(通過algo引用)
PH47代碼框架層提供給二次開發(fā)用戶的功能函數(shù)很少。在算法層當(dāng)中集成了飛行及導(dǎo)航控制的大量功能實(shí)現(xiàn),這些功能通過框架的架構(gòu)組成了飛行及導(dǎo)航控制功能的具體實(shí)現(xiàn)。二次開發(fā)用戶可使用算法層各模塊的現(xiàn)有功能函數(shù),但并不推薦。
算法層更重要的意義在于為用戶進(jìn)行二次開發(fā),尤其是算法邏輯的二次開發(fā)搭建起了邏輯清晰,功能完善的設(shè)計及運(yùn)行框架。用戶在此框架下,可集中注意力在算法邏輯自身的開發(fā)上,而無需過多分心于運(yùn)行邏輯的設(shè)計實(shí)現(xiàn)。
傳感器數(shù)據(jù)處理模塊指針(通過algo引用)
功能描述 | 功能模塊指針 | 對應(yīng)抽象類 |
主IMU類對象指針 | _pSensor_IMU | CSensor_Imu_Port |
擴(kuò)展IMU類對象指針 | _pSensor_IMU_Ext | CSensor_Imu_Port |
磁強(qiáng)傳感器類對象指針 | _pSensor_Mag | CSensor_Mag_Port |
氣壓傳感器類對象指針 | _pSensor_Baro | CSensor_Baro_Port |
空速傳感器類對象指針 | _pSensor_Airspeed | CSensor_Airspeed_Port |
Pwm輸入處理類對象指針 | _pSensor_RcCtrl | CSensor_RC_Port |
Tof及光流處理類對象指針 | _pSensor_Tof | CSensor_UsartParse_Port |
控制功能模塊指針(通過algo引用)
功能描述 | 功能模塊指針 | 對應(yīng)抽象類 |
輸入數(shù)據(jù)控制器模塊 | _pCtrlDataProc | CCtrlDateProcess_Port |
姿態(tài)解算模塊 | _pAttitudeCore | CAttitudeCore_Port |
姿態(tài)控制器模塊 | _pController_Atti | CController_Attitude_Port |
高度/速度控制器模塊 | _pController_HgtSpd | CController_HeightSpeed_Port |
位置/速度估算器模塊 | _pPosVelCore | CPosVelCore_Port |
位置控制器模塊 | _pController_Position | CController_Position_Port |
Pwm輸出控制器模塊 | _pServoOutCtrl | CServoOutCtrl_Port |
7. ???????應(yīng)用層功能函數(shù)(通過app引用)
與算法層類似,應(yīng)用層也為用戶進(jìn)行二次開發(fā)搭建了完善的框架。同時,應(yīng)用層提供了多個回調(diào)函數(shù)(空函數(shù))供用戶加入自己的代碼實(shí)現(xiàn)。
功能描述 | 回調(diào)函數(shù) | |
PH47框架啟動完成后調(diào)用,完成用戶功能代碼初始化工作 | Init() | |
快速線程回調(diào)函數(shù),被調(diào)用頻率在400-500hz之間 (基于Stm32F411的BBP飛控板) | FastThread() | |
正常線程回調(diào)函數(shù),被調(diào)用頻率固定為250hz | NormalThread_250Hz() | |
慢速線程回調(diào)函數(shù),被調(diào)用頻率固定為50hz | SlowThread_50Hz() | |
對用戶自定義調(diào)試串口控制命令的處理函數(shù) | HandleConsoleCmd() | |
對來自于GCS的用戶自定義上行控制命令處理函數(shù) | HandleRevMavlinkMsg() | |
飛行及導(dǎo)航控制實(shí)現(xiàn)函數(shù)。250hz速率調(diào)用,調(diào)用優(yōu)先級高于NormalThread_250Hz()函數(shù) | FlightControl_FixWing() | |
起飛前檢查回調(diào)函數(shù) | PreTakeOffCheck_FixWing() | |
飛行模式切換前回調(diào)函數(shù) | PreSwitchFlightMode() |
更多內(nèi)容見CSDN博客專欄:無人機(jī)飛控https://blog.csdn.net/ss15/category_9690939.html?spm=1001.2014.3001.5482相關(guān)資源:PH47: PH47運(yùn)動控制代碼框架.
https://gitee.com/ss15/ph47