找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8496|回复: 0
收起左侧

STM32F407,ucos3下,有独立看门狗,stop模式的进入与退出

[复制链接]
ID:105323 发表于 2016-3-4 17:51 | 显示全部楼层 |阅读模式
应用场景:在can总线有数据的情况下,mcu处于工作模式,在can总线没有数据的时候,mcu进入低功耗模式,即stop模式。可以类推到串口,usb等应用场景。

比较好的一个参考内容:http://www.51hei.com/bbs/dpj-44607-1.html

,里面有代码,可以参考。
另外如何进入低功耗可以参考stm32 的官方例程。

在有看门狗的情况下,即使进入低功耗,看门狗依然会复位唤醒mcu,可以上面的例子中使用RTC来定时唤醒MCU喂狗,而我的看门狗只有2秒,这样rtc会频繁唤醒mcu,浪费功耗。

我的做法是这样,探测到can总线没信号,需要进入低功耗,在flash中设置标记为,然后停止喂狗,让看门狗自己复位。系统复位后,第一件要做的事就是检查flash中的标记位,如果需要进入低功耗,那么把canrx配置成外部中断,系统进入低功耗。在系统被唤醒后,再初始化看门狗,这样就避免了看门狗复位的问题。即如果要睡眠,就不打开看门狗,当然就不用再喂了。

遇到的问题:
目前这个bug我依然不知道为什么,但是系统确实可以用了。
在ucos的start任务中,首先初始化时钟和systick,然后我再进入睡眠模式,这种情况下,死活不能进入睡眠模式,我也没有弄清楚为什么。然后我把顺序改成这样。首先进入睡眠模式,这样,在start任务中,我只初始化了变量,然后就直接进入睡眠模式,各个外设和时钟都没有做初始化(反正唤醒后还要重新配置时钟,干脆就先不配置)。唤醒后,先关闭外部中断,然后初始化时钟,初始化各个外设。这样可以正常进入。
目前这个方法好像是有用的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表