首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >终止线程CMSIS-RTOS

终止线程CMSIS-RTOS
EN

Stack Overflow用户
提问于 2016-06-07 21:40:58
回答 1查看 1.4K关注 0票数 0

我目前正在尝试让我的设备(STM32F105)进入低功耗模式,它通常在CMSIS RTOS上运行12个线程。为了简化算法,我认为(肯定不确定)使用osThreadTerminate终止所有线程,并在唤醒后使用osThreadCreate重新创建它们是一个好主意

代码语言:javascript
复制
    void os_idle_demon (void) {
  /* The idle demon is a system thread, running when no other thread is      */
  /* ready to run.                                                           */

  for (;;) {
    /* HERE: include optional user code to be executed when no thread runs.*/
        if (Sleep.SleepEnabled == 1)
        {
            if (Sleep.IsSleeping == 1)
            {
//              __wfi();
//              PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI); //PWR_Regulator_LowPower
                __nop();
//              osDelay(5000);
                if (Sleep.WakeUp)
                {
                    Sleep.IsSleeping = 0;
                    WakeUp();
//                  SetSysClock();
                    Sleep.WakeUp = 0;
                    Sleep.SleepEnabled = 0;
                    Sleep.TimeTillSleep = 60;
                }
            }
            else
            {
                if (Sleep.TimeTillSleep == 0 )
                {
                    TerminateTasks();
                    ResetPeripherals();
                    Sleep.IsSleeping = 1;
//              PWR_EnterSTANDBYMode();
//                  __wfi();
//                  PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);
                    __nop();
//                  osDelay(5000);
                }
            }
        }
  }
}    

正如您所看到的,我使用一些全局变量来确定何时睡眠。TerminateTasks();用于使用osThreadTerminate函数终止所有正在运行的线程,该函数似乎不会造成任何问题,但在我调用WakeUp();之后,该函数使用osThreadCreate函数重新创建终止的线程,我运行到一个操作系统堆栈溢出。因此,有几个问题我很难找到答案。CMSIS-RTOS中的osThreadTerminate命令在执行后会释放堆栈吗?有没有更好的进入低功耗模式的方法?我希望我把我的观点讲清楚了,如果需要更具体的,请让我知道。如果您能分享您遇到类似问题的经验,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-06-08 18:05:14

你在你的其他线程中使用动态分配吗?因为如果是这样的话,在线程运行时终止线程可能会导致内存泄漏。

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

https://stackoverflow.com/questions/37681092

复制
相关文章

相似问题

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