历史上的今天
今天是:2024年11月15日(星期五)
2019年11月15日 | stm32 低功耗下使用看门狗(不喂狗)
2019-11-15 来源:eefocus
在项目中需要低功耗处理,而使用看门狗可以保证程序不会跑死。但使用看门狗有一个问题,打开看门狗以后关闭不了,必须一直喂狗进行操作,那有啥好的办法呢?狗是必须养的,养这条狗花费了我半天时间,在此记录。
我能想到的有两种方案:
一、 使用独立看门狗,在低功耗下唤醒进行喂狗操作后继续休眠。
该方法可以通过增大看门狗的时钟分频,最大256分频,即可达到最大限度的喂狗时间,如果按照40K的时钟来算,(1 / (40K / 256)) * 4096 = 26.2144S, 在二十多秒起来喂狗在功耗方面可以接受,这种方法比较简单,不过二十多秒需唤醒一次。
二、利用复位关闭看门狗,在低功耗下不进行喂狗操作
使用的前提是需要判断复位的状态或者将软件复位标志写入flash中。
将软件复位标志写入flash
参考链接:https://www.eeworld.com.cn/mcu/2019/ic-news041243839.html,很好的说明了整个流程。
重点记录使用复位状态关闭看门狗。在stm32中,使用RCC的CSR寄存器根据状态位可以判断出复位原因。我在项目中判断了三种状态:上电/掉电态,看门狗复位态,软件复位态。下图流程图可以看出软件每次重启都读取复位标志位,由于业务需求,需要在首次开机时写入一些参数,根据业务需求开关机判断可有可无。 看门狗复位态指没有正常喂狗引起的复位,而软件复位态是我们通过代码手动软件复位的,因此是看门狗复位还是软件复位就可以区分。区分出来后,我们需要做相应处理,如果是看门狗复位态,说明程序跑死了,该让他正常初始化的初始化,养狗的养狗,最重要的是在业务代码完成后进入低功耗前,我们需要进行一步手动复位操作,这个操作用来判断我们是否想进入低功耗,我在程序中的做法是:在进入低功耗前进行软件复位,复位后判别出是软件复位标志,直接goto到低功耗处理函数。在这个goto的过程中没有进行开启看门狗操作,系统复位过,狗就这样子被我们关闭了,成功进入低功耗。
低功耗唤醒时再次开启看门狗,进入低功耗前手动软件复位,手动复位标志位判断出来后不进行喂狗,直接跳到低功耗处理函数,就能一直跑着。
PS:语言组织能力不强,在此放置一张流程图供参考,以便翻阅。
史海拾趣
|
wince 2440 usb mass storage问题请教! 在wince下作mass storage功能,现在功能已经能够实现,sd卡在pc端能够出现一个硬盘。现在想研究下mdd的code,有个问题要请教: sd卡在wince系统下会出现一个硬盘,当连接上pc usb线的时候,进入mass storage模式,这个盘会消失, 这个动作是开始于 ...… 查看全部问答> |
|
整整2天了,问题依旧没解决,大侠、高手帮忙! 要使用自定义HID进行数据传输,从ST网站下载了最新的USB开发例程um0424(吃一堑长一智)。里面 有Custom_HID,拿来就用。我是在embest的开发板上进行的,使用RVMDK里的工程,用STM3210B-EVAL 选 ...… 查看全部问答> |
|
怎么将SBUF传给temp的数据转化一下在LCD1602上显示呢?都想了两天了,实在不知道怎么做,求大虾相助!我的lcd写字符串语句是LCD_write_string(x,y,string);… 查看全部问答> |
|
谁了解Silicon Labs的单片机及其低功耗性能? 经常看到Silicon Labs提及其单片机(包括ARM)的低功耗特性,谁了解的能不能大致说说Silicon Labs的单片机怎么样?其低功耗特性和MSP430比较都有些什么差别? [ 本帖最后由 wangfuchong 于 2012-10-30 ...… 查看全部问答> |




