介紹
一種無OS的
MCU實(shí)用
軟件框架,包括任務(wù)輪詢管理,命令管理器、低功耗管理、環(huán)形緩沖區(qū)等實(shí)用模塊。系統(tǒng)中廣泛利用自定義段技術(shù)減少各個模塊間的耦合關(guān)系,大大提供程序的可維護(hù)性。
主要功能
- 支持模塊自動化管理,并提供不同優(yōu)先等級初始化聲明接口。
- 支持任務(wù)輪詢管理,通過簡單的宏聲明即可實(shí)現(xiàn),不需要復(fù)雜的聲明調(diào)用。
- 支持低功耗管理,休眠與喚醒通知。
- 支持命令行解析,命令注冊與執(zhí)行。
- blink設(shè)備支持,統(tǒng)一管理LED、震動馬達(dá)、蜂鳴器
使用說明
完整的代碼可以參考工程文件,系統(tǒng)開發(fā)平臺如下:
MCU:STM32F401RET6IDE:IAR 7.4或者Keil MDK 4.72A
任務(wù)初始化及任務(wù)輪詢管理(module)
使用此模塊前需要系統(tǒng)提供滴答定時器,用于驅(qū)動任務(wù)輪詢作業(yè)。(參考platform.c)
//定時器中斷(提供系統(tǒng)滴答)
void?SysTick_Handler(void)
{
????systick_increase(SYS_TICK_INTERVAL);?//增加系統(tǒng)節(jié)拍
}
注冊初始化入口及任務(wù)(參考自key_task.c)
static?void?key_init(void)
{
????/*do?something*/
}
static?void?key_scan(void)
{
????/*do?something*/
}
module_init("key",?key_init);??????????????//注冊按鍵初始化接口
driver_register("key",?key_scan,?20);??????//注冊按鍵任務(wù)(20ms輪詢1次)
命令管理器(cli)
適用于在線調(diào)試、參數(shù)配置等(參考使用cli_task.c),用戶可以通過串口輸出命令行控制設(shè)備行為、查詢設(shè)備狀態(tài)等功能。
命令格式
cli支持的命令行格式如下:
< param1> < param2> < paramn> ?< \r\n > ,< param1>, < param2>, < paramn>, ?< \r\n >每行命令包含一個命令名稱 命令參數(shù)(可選),命令名稱及參數(shù)可以通過空格或者','進(jìn)行分隔。系統(tǒng)默認(rèn)命令
cli系統(tǒng)自帶了2條默認(rèn)命令,分別是"?"與"help"命令,輸入他們可以列出當(dāng)前系統(tǒng)包含的命令列表,如下所示:??????????-?alias?for?'help'
help??????-?list?all?command.
pm????????-?Low?power?control?command
reset?????-?reset?system
sysinfo???-?show?system?infomation.
適配命令管理器
完整的例子可以參考cli_task.c.static?cli_obj_t?cli;???????????????????????????????/*命令管理器對象?*/
/*?
?*?@brief???????命令行任務(wù)初始化
?*?@return??????none
?*/?
static?void?cli_task_init(void)
{
????cli_port_t?p?=?{tty.write,?tty.read};???????????/*讀寫接口?*/
????
????cli_init(