一个使用协程实现的裸机调度器,类似协程库,但任务函数以及接口被封装成近似RTOS用法。通过利用C编译器自带__LINE__宏获取行号,任务阻塞退出时调度器保存当前行作为下次跳转断点,任务等待资源就绪后被唤醒并通过switch(line)跳转到断点继续运行,从而实现任务的调度,由于裸机无需过多关心竞态冒险问题。
1.任务数量无限制,取决于RAM/ROM大小
2.协作式任务优先级0~15。
3.任务等待资源阻塞(通过特殊的宏调用子函数,子函数内部也能阻塞)
4.任务信号
5.消息队列
6.软件定时器
7.通用异步等待接口(新增)
8.延迟调用接口(新增)
9.空闲函数(新增)
移植文档在DOC文件夹
1.通过特定的宏调用子函数,子函数则具备调用阻塞类接口的功能
2.子函数嵌套调用深度可配置
1.每个任务都绑定一个信号
2.通过给任务对象发送信号,唤醒任务
1.消息队列与任务绑定,任务创建时可配置是否使用消息队列
2.采用环形队列
3.消息等待可配置(超时时间/永久等待)
4.消息等待阻塞,收到消息后任务唤醒接着执行,或等待超时唤醒
1.周期定时/单次定时
2.软件定时(轮询中执行)/硬件定时器(在sysTick中断执行)
1.处理函数由用户自定义,处理完成后由返回值决定是否唤醒正在等待的任务。 2.使用通用异步等待接口,实现类同步的编程方式,代码执行流更加的清晰。
轻量的定时器,在某些场景下能代替软件定时器,无需创建,直接一个接口搞定定时,省事
类似于RTOS的空闲钩子函数,调用接口设置空闲函数后,当没有任务被调度时,它将被调用。
1.任务/任务子函数中的变量如需保持数据,请加static关键字,因为所有的任务都共享一个堆栈,产生任务切换会退出函数
2.不可在任务体使用 switch(){case},只能使用if(){}else if(){}代替
1.内核平台:无要求 (已知C51需要特殊配置)
2.ROM-无裁剪:10K+
3.ROM-极致裁剪:4.6K+
4.RAM: 1K+
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。