完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在项目中需要低功耗处理,而使用看门狗可以保证程序不会跑死。但使用看门狗有一个问题,打开看门狗以后关闭不了,必须一直喂狗进行操作,那有啥好的办法呢?狗是必须养的,养这条狗花费了我半天时间,在此记录。
我能想到的有两种方案: 一、 使用独立看门狗,在低功耗下唤醒进行喂狗操作后继续休眠。 该方法可以通过增大看门狗的时钟分频,最大256分频,即可达到最大限度的喂狗时间,如果按照40K的时钟来算,(1 / (40K / 256)) * 4096 = 26.2144S, 在二十多秒起来喂狗在功耗方面可以接受,这种方法比较简单,不过二十多秒需唤醒一次。 二、利用复位关闭看门狗,在低功耗下不进行喂狗操作 使用的前提是需要判断复位的状态或者将软件复位标志写入flash中。 将软件复位标志写入flash 重点记录使用复位状态关闭看门狗。在stm32中,使用RCC的CSR寄存器根据状态位可以判断出复位原因。我在项目中判断了三种状态:上电/掉电态,看门狗复位态,软件复位态。下图流程图可以看出软件每次重启都读取复位标志位,由于业务需求,需要在首次开机时写入一些参数,根据业务需求开关机判断可有可无。 看门狗复位态指没有正常喂狗引起的复位,而软件复位态是我们通过代码手动软件复位的,因此是看门狗复位还是软件复位就可以区分。区分出来后,我们需要做相应处理,如果是看门狗复位态,说明程序跑死了,该让他正常初始化的初始化,养狗的养狗,最重要的是在业务代码完成后进入低功耗前,我们需要进行一步手动复位操作,这个操作用来判断我们是否想进入低功耗,我在程序中的做法是:在进入低功耗前进行软件复位,复位后判别出是软件复位标志,直接goto到低功耗处理函数。在这个goto的过程中没有进行开启看门狗操作,系统复位过,狗就这样子被我们关闭了,成功进入低功耗。 低功耗唤醒时再次开启看门狗,进入低功耗前手动软件复位,手动复位标志位判断出来后不进行喂狗,直接跳到低功耗处理函数,就能一直跑着。 PS:语言组织能力不强,在此放置一张流程图供参考,以便翻阅。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1865浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
647浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
517浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 07:35 , Processed in 0.679714 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号