OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2301|回复: 1

wwdg的中断函数进不去怎么回事?

[复制链接]

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2016-11-1 16:26:06 | 显示全部楼层 |阅读模式
void WWDG_NVIC_Init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
        
    NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

void wwdg_init(UINT8 tr, UINT8 wr, UINT32 fprer)
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);    // WWDG时钟使能
   
    WWDG_CNT = tr & WWDG_CNT;   // 初始化WWDG_CNT
   
    /* 看门狗节拍=(48MHz(PCLK1)/4096)/8 = 1464Hz */
    /* 也就是说1秒钟计数器减1464下 */
    /* 周期 T=1/1464 s = 0.68ms */
    WWDG_SetPrescaler(fprer);   // 设置IWDG预分频值
   
    /* 窗口值用wr , 就是说计数器满是0x7F, 在减到wr之前喂狗了就算喂早了--会复位 */
    /* wr值一定要大于0x40, 否则窗口值就不存在了, 因为计数器从 0x40减到0x3F会产生看门狗复位 */
    WWDG_SetWindowValue(wr);    // 设置窗口值
   
    /* 看门狗使能, 并初始化定时器为0x7F 计数器减到0x3F时(T6位清零), 则产生一个复位*/
    WWDG_Enable(WWDG_CNT);      // 使能看门狗, 设置 counter
   
    WWDG_ClearFlag();           // 清除提前唤醒中断标志位
   
    WWDG_NVIC_Init();           // 初始化窗口看门狗 NVIC
   
    /* 使能EW interrupt  这个在计数器减到0x40的时候产生一个"死前"中断,
     * 当然也可以在这个中断里赶紧喂狗, 省得狗咬你(复位) */
    WWDG_EnableIT();            // 开启窗口看门狗中断
}

void WWDG_IRQHandler(void)
{
    WWDG_SetCounter(0x7F);
    WWDG_ClearFlag();
}

开启WWDG后,程序中不进行喂狗操作,在中断函数里面加一个断点。调试发现,cpu直接复位了,没有进入这个中断函数啊。
看手册,当计数值达到0x40时,会进入这个WEI中断啊。
芯片是f030r8t6,请大神指点下啊,谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
 楼主| 发表于 2016-11-1 17:02:20 | 显示全部楼层
有没有路过的大神指点一下,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 19:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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