一种无OS的MCU实用软件框架
扫描二维码
随时随地手机看文章
点击上方「嵌入式云IOT技术圈」,选择「置顶公众号」第一时间查看嵌入式笔记!
来源 | 码云-魔罗技术
介绍
一种无OS的MCU实用软件框架,包括任务轮询管理,命令管理器、低功耗管理、环形缓冲区等实用模块。系统中广泛利用自定义段技术减少各个模块间的耦合关系,大大提供程序的可维护性。主要功能
- 支持模块自动化管理,并提供不同优先等级初始化声明接口。
- 支持任务轮询管理,通过简单的宏声明即可实现,不需要复杂的声明调用。
- 支持低功耗管理,休眠与唤醒通知。
- 支持命令行解析,命令注册与执行。
- blink设备支持,统一管理LED、震动马达、蜂鸣器
使用说明
完整的代码可以参考工程文件,系统开发平台如下:MCU:STM32F401RET6IDE:IAR 7.4或者Keil MDK 4.72A任务初始化及任务轮询管理(module)
使用此模块前需要系统提供滴答定时器,用于驱动任务轮询作业。(参考platform.c)//定时器中断(提供系统滴答)
void SysTick_Handler(void)
{
systick_increase(SYS_TICK_INTERVAL); //增加系统节拍
}
注册初始化入口及任务(参考自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); //注册按键任务(20ms轮询1次)
命令管理器(cli)
适用于在线调试、参数配置等(参考使用cli_task.c),用户可以通过串口输出命令行控制设备行为、查询设备状态等功能。命令格式
cli支持的命令行格式如下:系统默认命令
cli系统自带了2条默认命令,分别是"?"与"help"命令,输入他们可以列出当前系统包含的命令列表,如下所示:? - 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 命令行任务初始化
* @return none
*/
static void cli_task_init(void)
{
cli_port_t p = {tty.write, tty.read}; /*读写接口 */
cli_init(