打印
[技术问答]

HC32L110B4PA:看门狗为啥不能产生复位,配置问题?

[复制链接]
1192|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chzfmx|  楼主 | 2020-3-10 11:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chzfmx 于 2020-3-10 11:46 编辑

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

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


使用特权

评论回复
沙发
chzfmx|  楼主 | 2020-3-10 11:48 | 只看该作者
本帖最后由 chzfmx 于 2020-3-10 11:49 编辑

代码一次居然贴不全
        M0P_WDT->CON_f.WINT_EN = 0;                //1-中断 0-复位
        M0P_WDT->CON_f.WCNTL = 0xFF;
        M0P_WDT->CON_f.WOV = 0x0B;                //3.2S
        //EnableNvic(WDT_IRQn,DDL_IRQ_LEVEL_DEFAULT,TRUE);
        //start
        M0P_WDT->RST = 0x1E;
        M0P_WDT->RST = 0xE1;
        
        while(1)
        {
        
               
        };

使用特权

评论回复
板凳
chzfmx|  楼主 | 2020-3-10 13:17 | 只看该作者
知道什么问题了,先配置成溢出中断的方式,看门狗已经启动了,然后程序改成溢出复位的方式,下载程序运行,这时候看门狗的状态还是运行,所以新的参数写不进去,必须要重新复位单片机,我是直接断电的,RST脚复位应该也行


使用特权

评论回复
地板
martinhu| | 2020-3-10 20:59 | 只看该作者
chzfmx 发表于 2020-3-10 13:17
知道什么问题了,先配置成溢出中断的方式,看门狗已经启动了,然后程序改成溢出复位的方式,下载程序运行, ...

是的,更改那些寄存器之后,需要重新上电之后才生效

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

1

粉丝