體感遙控器設計遭遇瓶頸?用STM32 MCU造!
3.2 任務間通信設計
任務和中斷服務子程序可以通過事件控制塊與其他任務進行通信,常用的通信方式有信號量、郵箱和消息隊列,同時,通過事件標志實現(xiàn)任務與事件之間的同步。本操作系統(tǒng)共創(chuàng)建了8個消息郵箱和1個事件標志:
OS_EVENT *App_AHRSMbox
OS_EVENT *App_CommandMbox
OS_EVENT *App_DataMbox
OS_EVENT *App_ADMbox
OS_EVENT *App_LCDCmdMbox
OS_EVENT *App_LCDDataMbox
OS_EVENT *App_LCDADMbox
OS_EVENT *App_LCDClockMbox
OS_FLAG_GRP *App_GreenLEDFlag
其中,App_GreenLEDFlag包括3個標志位:
#define Flg_GreenLED 0x0001
#define Flg-BlueLED 0x0002
#define Flg_Buzzer 0x0004
3.3 軟件系統(tǒng)流程圖設計
軟件系統(tǒng)流程圖如圖4所示。體感遙控器經上電初始化后,首先采集電池電壓,然后通過郵箱*App_ADMbox將采集得到的電量值發(fā)送給 12864液晶顯示模塊進行顯示,若電量過低,則使標志位Flg_Buzzer置位,即通過蜂鳴器進行報警。并且,通過DMA把iNEMO慣性導航模塊的數據接收到USART1,判斷校驗位是否正確,若不正確則重新配置DMA,重新接收數據;若正確則將接收到的數據轉化為控制指令,通過nRF24L01無線模塊發(fā)送給機器人。同時通過郵箱*App-LCDCmdMbox將指令發(fā)送給App_TaskLCD任務,在12864液晶顯示模塊顯示當前發(fā)送的指令,并通過置位Flg_GreenLED點亮相應LED,以表示STM32F103C8T6與iNEMO模塊通信正常;機器人本體接收到指令后,會給遙控器返回數據包,如果遙控器接收的數據錯誤標志位沒有置位,則說明遙控器與機器人本體通信正常,通過郵箱*App_LCDDataMbox將機器人的狀態(tài)信息發(fā)送給App_Tas kLCD任務,在12864液晶顯示模塊上顯示機器人本體運動狀態(tài),同時通過置位Flg_BlueLED點亮相應LED,以表示遙控器與機器人本體通信正常。App_TaskClock任務通過郵箱*App_LCDClockMbox向App_TaskLCD任務發(fā)送當前時間信息,并予以顯示。
體感遙控器軟件系統(tǒng)開發(fā)環(huán)境為IAR EWARM5.4,μC/OS-II版本為V2.86,STM32F103C8T6的調試工具為J-Link仿真器,STM32F103C8T6的固件庫版本為V2.0.3。
紅外遙控器相關文章:紅外遙控器原理萬能遙控器相關文章:萬能遙控器代碼
蜂鳴器相關文章:蜂鳴器原理
評論