秦山asd 发表于 2017-5-30 21:24:02

freeros tickless STOP 模式实现 低功耗

我采用的是STM32F071这个芯片,采用FREERTOS,使用的电池供电,所以要求低功耗,我采用的TICKLESS官方推荐的方式,配置#define configUSE_TICKLESS_IDLE          1,然后编写函数 vPortMySuppressTicksAndSleep在这里 进入STOP模式,采用RTC的闹钟中断唤醒,和 外部中断唤醒;   但是 经过测试,在外部中断中发送任务信号量(不是xSemaphoreTake创建的 而是任务自带的内部信号量),可以唤醒对应的任务,   然后测试 xSemaphoreTake 创建的独立信号量的方式,测试代码为 创建一个信号量,然后一个线程设置5秒等待这个信号量,然后输出调试信息,但是一旦唤醒,系统就死机了 然后不再进入SYSTICK中断了,,,,调试了 快一个月了,,,实在没办法了,,论坛里 希望有使用过 这种 低功耗方式的,可以指导一下,非常感谢!

发表于 2017-5-31 10:54:34

没有用过这个系统,进入STOP以后,唤醒会继续工作,有时候为了防止出错,可以考虑复位一下系统。

zoomdy 发表于 2017-5-31 11:45:46

真的需要RTOS吗,对于简单系统,RTOS引起的问题比解决掉的问题还要多

zoomdy 发表于 2017-5-31 11:46:26

检查堆栈有没有溢出

秦山asd 发表于 2017-5-31 13:02:34

安 发表于 2017-5-31 10:54
没有用过这个系统,进入STOP以后,唤醒会继续工作,有时候为了防止出错,可以考虑复位一下系统。 ...

复位肯定是不可以的!复位的话 应用就乱了!

秦山asd 发表于 2017-5-31 13:03:09

zoomdy 发表于 2017-5-31 11:46
检查堆栈有没有溢出

就一个测试任务,我堆栈开的很大的,空闲任务的堆栈我开的也很大!   

发表于 2017-5-31 13:26:40

唤醒以后,有没有重新配置系统的时钟?

abc4460414524 发表于 2017-6-2 18:06:00

我做过这个 tickless stop 模式

秦山asd 发表于 2017-6-3 09:38:04

abc4460414524 发表于 2017-6-2 18:06
我做过这个 tickless stop 模式

您好,可以加您QQ吗?我在F103实现了,F071一直卡主,找不到问题在哪里估计是CM0操作不一样!我的QQ 3314900970
页: [1]
查看完整版本: freeros tickless STOP 模式实现 低功耗