基於單片機系統串口控制檯的軟件實現(RTOS-STM32)

1.前言

玩過Linux的朋友, 是不是對Linux無所不能的串口Shell命令控制檯羨慕不已, 要是自己做的STM32F系列低檔次的MCU也有這種控制交互能力, 會給調試/維護和配置省下多少麻煩事呀, 比如啓動/關閉調試或自檢模式, 打印調試信息, 配置系統參數, 傳輸文件等等, 也有相當多的朋友憑藉自己出色的編程能力可以實現這些功能, 下面是我自寫的一個控制檯軟件, 以作交流.

本平臺(console)具備以下性能特點:
1) 移植性強,代碼文件少.
2) 只有在處理用戶的輸入命令時, 才佔用CPU資源;
3) 用戶可以非常靈活的添加按模板編寫的命令腳本文件, 自定義擴張能力強.
4) 支持操作系統和非操作系統兩種場景應用.
5) 調試模式設置, 命令幫助指令, 復位指令等基礎功能。 
功能越多設計會越複雜, 爲了解釋清楚代碼, 先向大家解釋一下以上功能的基礎實現原理, 並提供一個最小的的源碼工程

2,軟件實現

###2.1 串口配置###
定義console需使用的串口,具體配置詳見我的另一篇博客《單片機串口環形緩衝隊列處理架構》,鏈接地址:https://blog.csdn.net/qq_26964063/article/details/96861560

###2.2 console控制檯軟件編寫###

1,定義一個指向vint類型的指針變量,用於指向回調功能函數:
	typedef int (*consoleCallback)(char * buf, int len);//函數指針
	consoleCallback console_cb = NULL;

2,定義一個信號量,用於串口中斷接收發送信號量來通知主函數有信號待處理,作用:減少cpu的佔用時間
	SemHandle_t csSem		= NULL;
    sem_postIsr(csSem);//用於中斷post一個信號
    sem_pend(csSem);   //用於主函數pend一個信號

3,中斷部分與主函數的上下文切換
	//中斷函數
	void USARTx_
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章