在STM32G070上的cmsis OS线程标志和中断服务例程之间的交互中,我遇到了一个奇怪的问题。
当从GPIO上升边缘中断调用osThreadFlagsSet()时,整个程序挂在FreeRTOS软件的tasks.c行4853的configASSERT()中。
/* The task should not have been on an event list. */
configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL );有了这个处理器,没有一个解决方案能在线解决这个问题。
我试过:
设置priorities
由于一些奇怪的原因,我下面的答案修正了它。如果有人想要评论为什么这可能已经解决了它,请放心。我在这里发布这篇文章,以防其他可怜的人在搜索引擎上发现这个。
发布于 2021-07-14 20:36:04
通过更改.stack_size结构中的osThreadAttr_t变量来修复一个完全无关的线程,该线程以较低的优先级运行。
CubeMX软件以单词定义了最小堆栈大小,我的任务之一就是最小堆栈大小(128个字)。这不会引起任何其他问题,但当我将其更改为256个时,osThreadFlagsSet()调用一组不同的函数/线程就能正常工作。
https://stackoverflow.com/questions/68384576
复制相似问题