在线时间897 小时
UID3067179
注册时间2014-10-23
NXP金币2762
TA的每日心情 | 开心 昨天 14:05 |
---|
签到天数: 1509 天 连续签到: 11 天 [LV.Master]伴坛终老
版主
  
- 积分
- 8755
- 最后登录
- 2025-8-30
|
wwdtc例程的学习
一、手册资料
1.1、WWDTC框图
1.2、时钟框图
二、程序部分
2.1、wwdtc初始化
- void WWDTC_Init(void)
- {
- uint32_t wdtFreq;
-
- Chip_Clock_SetWDTOSC(WDTLFO_OSC_0_60, 64); //WDT oscillator freq = 0.6MHz divided by 64 = 9.375khz
- Chip_SYSCTL_PowerUp(SYSCTL_SLPWAKE_WDTOSC_PD); //Enable the power to the WDT
- wdtFreq = Chip_Clock_GetWDTOSCRate() / 4; //获取WDT时钟频率
- Chip_WWDT_Init(LPC_WWDT); //初始化WWDT时钟
- Chip_WWDT_SelClockSource(LPC_WWDT, WWDT_CLKSRC_WATCHDOG_WDOSC); //选择时钟源
- Chip_WWDT_SetTimeOut(LPC_WWDT, wdtFreq * 2); //设置WDT超时时间
- Chip_WWDT_Feed(LPC_WWDT); //喂狗
- Chip_WWDT_SetWarning(LPC_WWDT, 512); //设置警告中断
- Chip_WWDT_SetWindow(LPC_WWDT, wdtFreq * 3); //设置WWDT窗口时间
- Chip_WWDT_SetOption(LPC_WWDT, WWDT_WDMOD_WDRESET); //WWDT超时复位
- Chip_WWDT_ClearStatusFlag(LPC_WWDT, WWDT_WDMOD_WDTOF | WWDT_WDMOD_WDINT); //清除中断标志位
- NVIC_ClearPendingIRQ(BOD_WDT_IRQn); //清除挂起的中断
- NVIC_EnableIRQ(BOD_WDT_IRQn); //使能中断
- Chip_WWDT_Start(LPC_WWDT); //开始开门狗
- }
复制代码 2.2、wwdtcz中断程序 - void BOD_WDT_IRQHandler(void)
- {
- uint32_t wdtStatus = Chip_WWDT_GetStatus(LPC_WWDT); //获取中断状态
-
- if (wdtStatus & WWDT_WDMOD_WDTOF) //WWDT超时
- {
- Chip_WWDT_UnsetOption(LPC_WWDT, WWDT_WDMOD_WDEN); //停止WWDT
- Chip_WWDT_ClearStatusFlag(LPC_WWDT, WWDT_WDMOD_WDTOF); //清除WWDT超时中断标志位
- Chip_WWDT_Start(LPC_WWDT); //需要重新启动
-
- }
- if (wdtStatus & WWDT_WDMOD_WDINT) //警告中断
- {
- Chip_WWDT_ClearStatusFlag(LPC_WWDT, WWDT_WDMOD_WDINT); //清除中断标志位
- //Chip_WWDT_Feed(LPC_WWDT); //喂狗
- Board_LED_Toggle(0); //红色LED灯翻转
- }
- }
复制代码
2.3、主程序
- int main(void)
- {
- unsigned int cn=0;
- unsigned char ts=0;
- SystemCoreClockUpdate();
- Board_Init();
- LED_Init();
- //TIMER16_Init();
- //RTC_Init();
- WWDTC_Init();
- Board_LED_Toggle(2);
- DEBUGOUT(" nxpic \r\n");
- while (1)
- {
- }
- return 0;
- }
复制代码
三、程序执行结果
3.1、警告中断里面不喂狗,程序不停的复位重启
串口输出数据
3.2、警告中断里面喂狗,程序不会重启
主板上红色LED翻转
|
|