QPN框架的學(xué)習(xí)

QPN框架的學(xué)習(xí)

QPN是Quantum Leaps一個針對于嵌入式芯片開發(fā)的一個開源的輕量級Active Object (Actor) Frameworks框架,用于替代常規(guī)嵌入式開發(fā)中的Superloop,在常規(guī)的嵌入式學(xué)習(xí)中,大部分人是從學(xué)生時代開始接觸的,在學(xué)習(xí)的過程中,一般不太注重代碼的結(jié)構(gòu),可移植性和可讀性,在前期的過程中這并不影響學(xué)習(xí)的整個流程,特別是在學(xué)校中的各種比賽或者是制作中并不太注重,但在工作中的話,這個就有很大的短板。
在嵌入式程序的設(shè)計中,實時性是非常重要的,舉例說明:在一個嵌入式場合有以下的需求,一個四位數(shù)碼管,三個按鍵,因成本需要,不能使用數(shù)碼和按鍵驅(qū)動芯片,只允許使用一顆單片機來執(zhí)行驅(qū)動。需求非常簡單,但是常規(guī)的驅(qū)動會對按鍵進行延時消抖,如果有多級菜單的話,延時使用將更加多,但是數(shù)碼管需要一直掃描,如果使用普通的結(jié)構(gòu)進行驅(qū)動的話,在按鍵被按下時數(shù)碼管將出現(xiàn)閃爍或者停止顯示等現(xiàn)象。為了解決這個問題一般會使用狀態(tài)機框架來設(shè)計程序。熟練掌握狀態(tài)機是每個嵌入式程序員的必修課。狀態(tài)機需要繪制狀態(tài)圖,然后根據(jù)狀態(tài)圖來寫代碼。Quantum Leaps為了減輕嵌入式程序員的設(shè)計負(fù)擔(dān),并增加程序的靈活性設(shè)計了QPC,QPCPP,QPN,等狀態(tài)機框架,配合QM狀態(tài)圖繪制工具可以生成一個符合嵌入式需要的代碼。

QM.png
int main(void)
{
  HAL_Init();
  MX_GPIO_Init();
  MX_FSMC_Init();
  Blinky_Ctor();
  QF_init(Q_DIM(QF_active));
  return QF_run();
}

主函數(shù)的代碼非常清晰,這不但有利于管理代碼的結(jié)構(gòu),也有利于修改程序的整體流程,大提高了程序可重用性,并且在日后重新查看代碼的時候,可以根據(jù)狀態(tài)圖來查看代碼的結(jié)構(gòu),代碼易讀性大大提高。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容