基于μC/OS-III及STM32的多功能控制器設計
電動(dòng)軌道車(chē)控制系統一般分為多個(gè)子系統,子系統受一個(gè)主控器控制。這樣的結構設計繁瑣,編程復雜。采用μC/OS-III操作系統、STM32F103RC微控制器、12864液晶屏、PVC按鍵、無(wú)線(xiàn)串口模塊、鋰電池等實(shí)現具有人機界面、無(wú)線(xiàn)串口功能的總線(xiàn)主控器。該控制器具有人機界面、軌道車(chē)主控器、遙控接收器、遙控面板等多種功能,并且能在不同項目中使用。(※ μC/OS-III從官網(wǎng)上下載,文件名為Micrium_uC-Eval-STM32F107_uCOS-III,版本為V1.29.01.00。)
本文引用地址:http://dyxdggzs.com/article/264099.htm1 硬件結構
從系統接口看,該控制器具有顯示、按鍵、無(wú)線(xiàn)收發(fā)、串口、485總線(xiàn)等接口,作遙控面板時(shí)用電池供電,內部具有電池和充電電路。硬件框圖如圖1所示。
圖1中無(wú)線(xiàn)串口用模塊實(shí)現系統遙控功能,顯示器用并口連接。鍵盤(pán)部分有或門(mén)電路,可實(shí)現按鍵中斷。電源電路中的外部電壓、電池電壓可被控制器測量,當測量得到無(wú)外部電壓輸入時(shí),控制器自動(dòng)切換到遙控面板模式。485總線(xiàn)接口用于和其他子系統通信。

圖1 多功能控制器硬件框圖
2 系統移植
STM32F1XX固件庫最新版本為V3.5.0.μC/OSIII支持的庫文件版本為V2.1.0.為了μC/OS-III能夠在最新的固件庫上運行,首先用新固件庫替換原有固件庫代碼并改變入口頭文件名,然后有兩處代碼需要作修改。一是芯片時(shí)鐘初始化函數,函數名為“BSP_Init”,修改為:

二是操作系統時(shí)鐘初始化函數,函數名為“OS_CPU_SysTickInit”,修改為:

這兩處都是因為原有固件庫需要多條語(yǔ)句才能實(shí)現時(shí)鐘初始化,新版本提供專(zhuān)門(mén)的初始化函數。
3 驅動(dòng)編寫(xiě)
3.1 鍵盤(pán)驅動(dòng)的編寫(xiě)
μC/OS-III具有任務(wù)信號量的功能,該信號量隨著(zhù)任務(wù)的創(chuàng )建而創(chuàng )建。鍵盤(pán)驅動(dòng)有鍵盤(pán)掃描任務(wù)實(shí)現,按鍵觸發(fā)外部中斷,外部中斷發(fā)送任務(wù)信號量到鍵盤(pán)掃描任務(wù),鍵盤(pán)掃描任務(wù)掃描鍵盤(pán)并把鍵值保持在全局變量中。代碼如下:

3.2 液晶顯示器printf函數
液晶顯示器一般是輸入一個(gè)字符的編碼和位置然后顯示出來(lái),不能實(shí)現字符串格式化顯示。實(shí)現printf,首先使用格式化函數“vsnprintf”得到格式化后的字符串,然后該字符串被打印到屏幕上。具體函數如下:

評論