首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM32 ISR例程挂在cmsis-OS osThreadFlagSet()中

STM32 ISR例程挂在cmsis-OS osThreadFlagSet()中
EN

Stack Overflow用户
提问于 2021-07-14 20:17:13
回答 1查看 198关注 0票数 0

在STM32G070上的cmsis OS线程标志和中断服务例程之间的交互中,我遇到了一个奇怪的问题。

当从GPIO上升边缘中断调用osThreadFlagsSet()时,整个程序挂在FreeRTOS软件的tasks.c行4853的configASSERT()中。

代码语言:javascript
复制
/* The task should not have been on an event list. */
configASSERT( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) == NULL );

有了这个处理器,没有一个解决方案能在线解决这个问题。

我试过:

设置priorities

  • Increasing优先级分组的
  • (G070不可用或定义)
  • 更改所有任务
  • 堆栈/堆分配

由于一些奇怪的原因,我下面的答案修正了它。如果有人想要评论为什么这可能已经解决了它,请放心。我在这里发布这篇文章,以防其他可怜的人在搜索引擎上发现这个。

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 20:36:04

通过更改.stack_size结构中的osThreadAttr_t变量来修复一个完全无关的线程,该线程以较低的优先级运行。

CubeMX软件以单词定义了最小堆栈大小,我的任务之一就是最小堆栈大小(128个字)。这不会引起任何其他问题,但当我将其更改为256个时,osThreadFlagsSet()调用一组不同的函数/线程就能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68384576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档