[技术问答] HC32L110B4PA:看门狗为啥不能产生复位,配置问题?

[复制链接]
 楼主| chzfmx 发表于 2020-3-10 11:43 | 显示全部楼层 |阅读模式
本帖最后由 chzfmx 于 2020-3-10 11:46 编辑

项目中用到看门狗,在测试的时候碰到问题:
首先配置为超时产生中断,在中断中清中断标志,周期进入中断,测试正常;
然后修改配置为超时产生复位,不成功,代码如下,没有进行喂狗操作,不知道啥问题:

  1. int32_t main(void)
  2. {
  3.         uart0_init(9600);
  4.         uart_send_string("mcu_start!\r\n");
  5.         /* 屏蔽部分是wdt例程中的代码,超时也不能产生复位
  6.         stc_wdt_config_t  stcWdt_Config;
  7.     stc_lpm_config_t stcLpmCfg;
  8.     DDL_ZERO_STRUCT(stcWdt_Config);
  9.     DDL_ZERO_STRUCT(stcLpmCfg);
  10.     stcLpmCfg.enSLEEPDEEP = SlpDpDisable;//SlpDpEnable;
  11.     stcLpmCfg.enSLEEPONEXIT = SlpExtEnable;
  12.     stcWdt_Config.u8LoadValue = 0x0b;//3.2s
  13.     stcWdt_Config.enResetEnable = WRESET_EN; //WINT_EN;//
  14.     stcWdt_Config.pfnWdtIrqCb = WdtCallback;
  15.     Clk_SetPeripheralGate(ClkPeripheralWdt,TRUE);//
  16.     Wdt_Init(&stcWdt_Config);
  17.     Wdt_Start();
  18.     */   
  19.         //Clk_SetPeripheralGate(ClkPeripheralWdt,TRUE);//
  20.         M0P_CLOCK->PERI_CLKEN |= 1<<15;


 楼主| chzfmx 发表于 2020-3-10 11:48 | 显示全部楼层
本帖最后由 chzfmx 于 2020-3-10 11:49 编辑

代码一次居然贴不全
  1.         M0P_WDT->CON_f.WINT_EN = 0;                //1-中断 0-复位
  2.         M0P_WDT->CON_f.WCNTL = 0xFF;
  3.         M0P_WDT->CON_f.WOV = 0x0B;                //3.2S
  4.         //EnableNvic(WDT_IRQn,DDL_IRQ_LEVEL_DEFAULT,TRUE);
  5.         //start
  6.         M0P_WDT->RST = 0x1E;
  7.         M0P_WDT->RST = 0xE1;
  8.         
  9.         while(1)
  10.         {
  11.         
  12.                
  13.         };
 楼主| chzfmx 发表于 2020-3-10 13:17 | 显示全部楼层
知道什么问题了,先配置成溢出中断的方式,看门狗已经启动了,然后程序改成溢出复位的方式,下载程序运行,这时候看门狗的状态还是运行,所以新的参数写不进去,必须要重新复位单片机,我是直接断电的,RST脚复位应该也行

503065e672258199d9.png
martinhu 发表于 2020-3-10 20:59 | 显示全部楼层
chzfmx 发表于 2020-3-10 13:17
知道什么问题了,先配置成溢出中断的方式,看门狗已经启动了,然后程序改成溢出复位的方式,下载程序运行, ...

是的,更改那些寄存器之后,需要重新上电之后才生效
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

1

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