freeros tickless STOP 模式实现 低功耗
我采用的是STM32F071这个芯片,采用FREERTOS,使用的电池供电,所以要求低功耗,我采用的TICKLESS官方推荐的方式,配置#define configUSE_TICKLESS_IDLE 1,然后编写函数 vPortMySuppressTicksAndSleep在这里 进入STOP模式,采用RTC的闹钟中断唤醒,和 外部中断唤醒; 但是 经过测试,在外部中断中发送任务信号量(不是xSemaphoreTake创建的 而是任务自带的内部信号量),可以唤醒对应的任务, 然后测试 xSemaphoreTake 创建的独立信号量的方式,测试代码为 创建一个信号量,然后一个线程设置5秒等待这个信号量,然后输出调试信息,但是一旦唤醒,系统就死机了 然后不再进入SYSTICK中断了,,,,调试了 快一个月了,,,实在没办法了,,论坛里 希望有使用过 这种 低功耗方式的,可以指导一下,非常感谢!没有用过这个系统,进入STOP以后,唤醒会继续工作,有时候为了防止出错,可以考虑复位一下系统。 真的需要RTOS吗,对于简单系统,RTOS引起的问题比解决掉的问题还要多 检查堆栈有没有溢出 安 发表于 2017-5-31 10:54
没有用过这个系统,进入STOP以后,唤醒会继续工作,有时候为了防止出错,可以考虑复位一下系统。 ...
复位肯定是不可以的!复位的话 应用就乱了! zoomdy 发表于 2017-5-31 11:46
检查堆栈有没有溢出
就一个测试任务,我堆栈开的很大的,空闲任务的堆栈我开的也很大! 唤醒以后,有没有重新配置系统的时钟? 我做过这个 tickless stop 模式 abc4460414524 发表于 2017-6-2 18:06
我做过这个 tickless stop 模式
您好,可以加您QQ吗?我在F103实现了,F071一直卡主,找不到问题在哪里估计是CM0操作不一样!我的QQ 3314900970
页:
[1]