控制系統軟件分為3個部分:主程序、線程1、線程2。其中,主程序負責硬件的初始化,負責線程1和線程2的創建,還負責線程間通信用的消息隊列的創建;線程1負責處理觸摸屏人機界面,線程2負責處理后臺控制邏輯。控制軟件流程圖如圖2所示。
軟件的設計過程,分別在3個開發工具中按順序完成,簡述如下:
1)在硬件配置工具STM32CubeMX中,根據配置向導完成顯示屏的LTDC顯示控制器的設置,完成FMC外置內存控制器的設置,完成連接繼電器的GPIO口的配置,完成ADC溫度采集的配置、計時周期為1 s的定時器的設置。在STM32CubeMX中還要完成嵌入式實時操作系統的設置,以在應用程序中開啟多線程;新建2個線程,線程1負責處理觸摸屏人機界面,線程2負責處理后臺控制邏輯。
2)用TouchGFX圖形界面編輯器制作出如圖3所示的觸摸屏界面。
3)在代碼編輯器IAR workbench中,編輯修改上述兩步所生成的程序代碼,以實現圖2所示的邏輯。用戶界面中設定變量(溫度和時間),包括“啟動”和“停止”按鈕的動作,在屏幕刷新的過程中,由線程1通過消息隊列傳遞給線程2;線程2每秒采集一次當前的溫度并計算一次累加保溫時間,將當前溫度和剩余時間通過消息隊列傳遞給線程1,線程1再將收到的值顯示在屏幕上。
系統加電后,當用戶按下“啟動”按鍵時開始循環工作,直到累計保溫時間達到預定時間,或者按下“停止”按鍵。為了保證溫度的采樣有較高的精度,負責溫度采集的ADC采樣模塊采集10個值,再對10個值取平均值,作為最終的溫度值。為了保證保溫時間的累加有較高的精度,定時器以1 s為周期持續定時,當1 s計時結束后,產生中斷,又開始新一輪的1 s計時。定時器更新中斷觸發ADC溫度采集和邏輯處理,由于定時器獨立于CPU內核運行,不占用CPU的邏輯處理時間,所以可以保證高的計時精度。