主要介紹在移植好的基於NXP之kinetis K64+freeRTOS平臺上添加Modbus驅動。web
對freeRTOS不懂或者移植不懂的能夠看看以前公衆號的文章瀏覽器
準備工做:.net
1,基於以前移植好的K64+freeRTOS平臺設計
2,裝有IAR的電腦調試
3,塔式系統平臺TWR-K64F120M
以前曾屢次提到過,移植一個源碼包,必須熟悉他的源碼目錄結構,因此本次移植前,假設你已經熟悉freeRTOS源碼目錄結構,若是不熟悉,請自行學習。以前移植好的K64帶有一個簡單的webserver,咱們在添加Modbus後,能夠把modbus讀上來的數據經過webserver提供給客戶端訪問,能夠實現一個網關的功能。
驅動開發:
其實主要添加的文件就是UART驅動和Modbus_Task任務,另外按照標準協議,須要一個定時器來檢測Modbus幀完成中斷。
咱們用的是UART5來實現,須要注意的是UART5 使用的時鐘是Bus clock,而不是系統時鐘,咱們系統你們知道最初的移植是使用96M時鐘,2分頻後爲bus Clock,因此UART5使用48M時鐘,初始化時候要注意,這個最初在調試時候由於都是複用以前的代碼,因此沒有注意,剛開始串口不工做,後來查看數據手冊調整時鐘後就行了,固然你也可使用KSDK的驅動,可是仍是要修改才能用於Modbus通訊。在主任務中建立Modbus任務和用於中斷的信號量
在幀完成的定時器中斷檢測中按照freeRTOS的中斷機制須要添加
其實主要是在咱們以前的UART驅動上添加了兩個freeRTOS 的中斷專用API函數。
在中斷向量表中添加串口和定時器中斷。
另外還須要注意的是由於咱們此次是Modbus主站,與一個Modbus從站通訊讀取從站設備的一些狀態,如電流,電壓,溫度等,因此儘可能按照Modbus主站的狀態圖來開發
最後須要注意的是,將Modbus讀取的數據與webserver的數據進行映射,就能夠實現從modbus到HTTP的網關功能,將底層一些設備的參數,狀態,在網頁上顯示。稍微修改就能夠用於實際項目。
本設計主要設計到Modbus主站開發,webserver 移植和網頁修改,經過網線將此K64塔式系統接入無線路由器,也能夠經過手機,平板等設備在瀏覽器端訪問到數據。只要你弄懂了這一套框架,還能夠給你的設備接入更多外設,像WIFI, BLE,等無線外設驅動,實現更多豐富的功能。
/*******************************************************************/
/*本公衆平臺長期承接嵌入式項目開發,產品設計,設計外包等,爲您提供*/
/*一站式交鑰匙解決方案和設計。歡迎致電諮詢:18706715925 武工*******/
/******************************************************************/
本文分享自微信公衆號 - 嵌入式程序猿(InterruptISR)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。