正點原子Minifly遙控器V1.1—程式碼分析:radiolink.c、usblink.c、atpk.c三個檔案之間的關係

一剃解千愁發表於2020-11-06

先看radiolink.c函式和佇列之間的資料流向:
在這裡插入圖片描述

radiolinkTask:主要功能是傳送 ATKP 資料包給四軸, 並接收四軸返回的應答包。
實現過程:在radiolink.c定義兩個訊息佇列,每個訊息就是一個ATKP包,實際就是atkp_t結構體,分別為txQueue佇列和rxQueue佇列,
傳送和接收都是針對四軸來說
**txQueue佇列:**存放要傳送給四軸的資訊,也就是如果想通過遙控器把資料傳送給四軸,只需通過radiolinkSendPacket函式,將ATKP包傳送到這個佇列。比如usblinkDataProcessTask函式中呼叫radiolinkSendPacket(&p),將上位機發過來的 ATKP 資料包傳送到這個txQueue佇列,再由radiolinkTask任務傳送給四軸
rxQueue佇列:存放從四軸發來資訊,也就是四軸返回的應答包,這個包經過radiolinkDataProcessTask呼叫radiolinkReceivePacketBlocking(&p)獲取包, 通過atkpAnalyze(&p)處理包,處理完之後再通過usblink 鏈路轉發給上位機。

相關文章