STM32上运行UCOS建立的信号量为什么最多只有8个?
1个回答
展开全部
先看信号量创建函数的源代码
https://doc.micrium.com/display/osiidoc/Semaphore+Management
创建信号量成功与否可以直接从代码里看到
和信号量总数量相关的只有一处就是,从检查 OSEventFreeList表链来判断是否还有可用的资源。由于手头没有完整代码, OSEventFreeList这个表链是什么结构,其初始化代码位置就不确定了。但是可用肯定的是这个表链的初始化长度决定了最多可以分配多少个信号量。
你若需要更多信号量,就需要要修改 OSEventFreeList 初始化代码的相关参数。并且修改该参数后,有可能需要修改其他内存资源分配的部分(没有分析过源代码,所以不确定)。
https://doc.micrium.com/display/osiidoc/Semaphore+Management
创建信号量成功与否可以直接从代码里看到
和信号量总数量相关的只有一处就是,从检查 OSEventFreeList表链来判断是否还有可用的资源。由于手头没有完整代码, OSEventFreeList这个表链是什么结构,其初始化代码位置就不确定了。但是可用肯定的是这个表链的初始化长度决定了最多可以分配多少个信号量。
你若需要更多信号量,就需要要修改 OSEventFreeList 初始化代码的相关参数。并且修改该参数后,有可能需要修改其他内存资源分配的部分(没有分析过源代码,所以不确定)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询