打印

[技术问答] 关于华大MCU HC32F005的WDT问题

[复制链接]
188|7
跳转到指定楼层
楼主
【1】看门狗WDT开启后,无法关闭,而MCU处于深度休眠状态下时,会被WDT复位唤醒,在唤醒后,我需要侦测到如果是WDT复位引起的话,则不需要执行开机动作,而是直接休眠,以达到低功耗的目的
【2】
实际测试情况如下,就是,如果将获取芯片复位的原因的函数 Reset_GetCause
放在主程序下的MAIN函数的第一条语句,则会出现,不管是MCU手动上电还是进入仿真的情况下,stcVal.u8Wdt 这个标志都会置位,导致上电时开机动作不正常。
【3】而如果我将Reset_GetCause 这个函数放入 SystemInit 函数的第一条语句,则开启了看门狗,WDT,但是在芯片休眠后,WDT复位芯片,则无法读取到stcVal.u8Wdt 该标志位1的情况,直接执行开机动作,

使用特权

评论回复

相关资料

沙发
| 2019-7-16 17:44 | 只看该作者
1. 用户手册中已说明当POR5V或POR15V为1时,其它标志不可信。
2. 用户手册中已说明当查到相应的复位标志后,应将这些标志清零以备下次复位使用。
3. 建议的软件流程:
———a,如果查询到POR5V或POR15V为1,则向RESET_FLAG写入0x00,并执行上电复位流程。
———b,如果查询到POR5V和POR15V均为0,WDT标志为1,则向RESET_FLAG写入0x00,并执行看门狗复位流程。




627005d2d9910a2ca0.png (81.2 KB, 下载次数: 0)

627005d2d9910a2ca0.png

使用特权

评论回复
板凳
| 2019-7-16 17:54 | 只看该作者
本帖最后由 eelux 于 2019-7-16 18:35 编辑

软件的写法流程可以参考下图,谢谢!

6666.png (38.33 KB, 下载次数: 0)

6666.png

使用特权

评论回复
地板
| 2019-7-16 23:12 | 只看该作者
华大做超低功耗用看门狗是很无奈的,我目前的做法是开启低功耗定时器,程序中用了一个变量记录运行情况,看门狗定时做到比较长,用低功耗定时器做了一个虚拟看门狗,每次判断变量记录对比,如果变化,说明还在主程序里运行,喂狗。否则坐等看门狗复位

使用特权

评论回复
5
| 2019-7-17 09:13 | 只看该作者
溢出后产生中断就可以了,自己稍加处理可以决定产生软件复位,完成WDT功能

使用特权

评论回复
6
| 2019-7-18 09:32 | 只看该作者
一事无成就是我 发表于 2019-7-16 23:12
华大做超低功耗用看门狗是很无奈的,我目前的做法是开启低功耗定时器,程序中用了一个变量记录运行情况,看 ...

你好,因为高可靠性MCU,一旦打开,就无法关闭。
请教一下你理想中的WDT是怎么样的?我们后续评估一下,集成进入MCU

使用特权

评论回复
7
| 2019-7-18 19:02 | 只看该作者
liaotian001 发表于 2019-7-18 09:32
你好,因为高可靠性MCU,一旦打开,就无法关闭。
请教一下你理想中的WDT是怎么样的?我们后续评估一下, ...

理想的是时钟关闭后看门狗就失去时钟停止,一旦外部事件触发则唤醒时钟,自然看门狗就有效了,这个就是理想的,除非你片子昏睡百年醒不来

使用特权

评论回复

评论

liaotian001 2019-7-19 09:31 回复TA
这个功能PCA WDT可以实现。但缺点是PCA 的WDT 时间太短。 OK,这个功能放在下一代的超低功耗MCU内部,有option 配置 0: 只要打开WDT,任何时刻WDT都不能被停止 1: 只要打开WDT,进入deepsleep, WDT可以被hold计数,一旦唤醒deepsleep,继续计数。 
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表