我是在main中有创建信号量的函数
led_event = OSQCreate(&led_q[0] , MSGSIZE);
这个因为配置中信号量上限较小
而在sys_arch.c中有一个创建消息邮箱的函数
err_t sys_mbox_new
其中调用了:
(*mbox)->pQ=OSQCreate(&((*mbox)->pvQEntries[0]),size); //使用ucos创建一个消息队列
从上面可知lwip会隐含的创建了一些消息队列,如果上限不足会导致出错误。
增加os_cfg.h中如下宏定义:
define OS_MAX_EVENTS 20u //事件的上限
define OS_MAX_QS 20u //信号量的上限
define OS_MAX_TASKS 20u //任务上限

本文详细介绍了在配置中限制信号量上限和消息队列数量以避免资源冲突的方法。通过调整os_cfg.h中的宏定义,确保了系统在Ucos和Lwip环境下的稳定运行。重点讨论了如何解决信号量不足导致的错误,以及增加事件、信号量和任务上限的策略。
4184

被折叠的 条评论
为什么被折叠?



