一種STM32框架,實(shí)現(xiàn)RTOS的部分功能
介紹
一種無OS的STM32實(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á)、蜂鳴器
使用說明
點(diǎn)擊STM32嵌入式開發(fā)公眾號文末的“閱讀原文”,可以完整的工程代碼,系統(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支持的命令行格式如下:系統(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(