tianheiGE 发表于 2015-1-6 21:09:36

求助,使用RT-Thread线程中进低功耗后再唤醒系统就重启了

RT,我是这样做的,检测到要进低功耗后,创建一个线程,线程中等待系统确实可以被关闭了,就使芯片进入低功耗(低速CR时钟运行)

线程流程大概是这样的

线程开始

rt_enter_critical();                            //使用调度锁停止调度

level = rt_hw_interrupt_disable();      //关中断

关闭一些外设();

设置系统时钟为低速CR();

while(1)
{
        一些I/O检测();

        if(要开机)
        {
                break;
        }
}

设置为正常的运行时钟();

初始化外设();

rt_hw_interrupt_enable(level); //使能中断

rt_exit_critical();    //解锁调度器

线程结束退出


这个线程退出后系统就从头开始运行了,像是复位了,我想要他这里结束后就继续调度其他线程,而且有时会这样,有时不会,让人想不明白了,

芯片用的是cortex-M3核的富士通单片机。

第一次使用rt-thread,如果这样做有什么不合理的地方请各位指出谢谢!

li.wen 发表于 2015-1-26 14:22:15

楼主问题解决了没有?现在我也在找RT-Thread低功耗的办法。

acmilannast 发表于 2015-1-26 16:23:03

这跟RT-Thread 没大关系,主要看cpu低功耗是怎么实现的。很多cpu退出低功耗就直接复位的,而不是回复低功耗前的现场继续执行语句

tianheiGE 发表于 2015-1-26 19:11:09

li.wen 发表于 2015-1-26 14:22
楼主问题解决了没有?现在我也在找RT-Thread低功耗的办法。

后面我发现了问题,是因为进低功耗的时候要操作时钟,使用的芯片有时钟监测功能,是一个时钟异常导致,芯片复位的

tianheiGE 发表于 2015-1-26 19:12:01

acmilannast 发表于 2015-1-26 16:23
这跟RT-Thread 没大关系,主要看cpu低功耗是怎么实现的。很多cpu退出低功耗就直接复位的,而不是回复低功耗 ...

后面发现是我操作时钟不恰当导致的时钟异常发生的复位
页: [1]
查看完整版本: 求助,使用RT-Thread线程中进低功耗后再唤醒系统就重启了