4760|1

336

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

LPC1500体验+之八_WWDT使用初谈 [复制链接]

本帖最后由 youzizhile 于 2014-9-16 11:26 编辑

我的其他帖子:
LPC1500体验+开发环境的构建
LPC1500体验+驱动步进电机设计
LPC1500体验+led闪烁
LPC1500体验+之四_串口调试接收数据成功
LPC1500体验+之五_LCD1602驱动电路设计
LPC1500体验+之六_步进电机驱动设计
LPC1500体验+_AD使用初谈
LPC1500体验+之八_WWDT使用初谈

下面先看看LPC1549的看门狗特性:







/**
* @brief    看门狗中断处理程序
* @return  
* @note    处理看门狗的告警和溢出事件
*/
voidWDT_IRQHandler(void)
{
      uint32_t wdtStatus =Chip_WWDT_GetStatus(LPC_WWDT);
      Board_LED_Toggle(0);
      /* 若是能WWDT_WDMOD_WDRESET,芯片在发生前会重启一次,但是WDT不会*/
      if (wdtStatus & WWDT_WDMOD_WDTOF) {
           /* 没有溢出的话,看门狗被喂不会发生 */
           Chip_WWDT_UnsetOption(LPC_WWDT,WWDT_WDMOD_WDEN); /* 停止看门狗*/
           Chip_WWDT_ClearStatusFlag(LPC_WWDT,WWDT_WDMOD_WDTOF);
           Chip_WWDT_Start(LPC_WWDT); /* 需要重启 */
      }
      /* 处理警告中断 */
      if (wdtStatus & WWDT_WDMOD_WDINT) {
           /* 警告溢出前,喂看门狗不会发生*/
           Chip_WWDT_ClearStatusFlag(LPC_WWDT,WWDT_WDMOD_WDINT);
           Chip_WWDT_Feed(LPC_WWDT);
      }
}

intmain(void)
{
      uint32_t wdtFreq;
      SystemCoreClockUpdate();
      Board_Init();
      Board_LED_Set(0, false);
      /* 使能看门狗时钟 */
      Chip_SYSCTL_PowerUp(SYSCTL_POWERDOWN_WDTOSC_PD);
      /*WDT的频率为输入频率除以4 */
      wdtFreq = Chip_Clock_GetWDTOSCRate() / 4;
      /* 初始化WWDT (同时使能WWDT clock) */
      Chip_WWDT_Init(LPC_WWDT);
      /* 设置看门狗的喂狗时间约为2s
         设置看门狗的警告时间为喂狗时间之后的512ticks
         设置看门狗的时间窗为3S */
      Chip_WWDT_SetTimeOut(LPC_WWDT, wdtFreq *2);
      Chip_WWDT_SetWarning(LPC_WWDT, 512);
      Chip_WWDT_SetWindow(LPC_WWDT, wdtFreq *3);
      /* 若发生时间溢出则配置WWDT产生RESET */
      Chip_WWDT_SetOption(LPC_WWDT,WWDT_WDMOD_WDRESET);
      /* 清楚看门狗的警告和溢出中断*/
      Chip_WWDT_ClearStatusFlag(LPC_WWDT, WWDT_WDMOD_WDTOF| WWDT_WDMOD_WDINT);
      /*打开除了 ADC, USB and temp sensor 的电源,使之冲深度睡眠中唤醒 */
      Chip_SYSCTL_SetWakeup(~(SYSCTL_SLPWAKE_IRCOUT_PD| SYSCTL_SLPWAKE_IRC_PD |
                                       SYSCTL_SLPWAKE_FLASH_PD| SYSCTL_SLPWAKE_SYSOSC_PD |
                                       SYSCTL_SLPWAKE_SYSPLL_PD| SYSCTL_SLPWAKE_WDTOSC_PD));
      /* 允许WDTCPU冲深度睡眠中唤醒 */
      Chip_SYSCTL_EnableERP0PeriphWakeup(SYSCTL_ERP0_WAKEUP_WDTINT);
      /* 清除和使能看门狗的中断 */
      NVIC_ClearPendingIRQ(WWDT_IRQn);
      NVIC_EnableIRQ(WWDT_IRQn);
      /* 打开看门狗开始工作 */
      Chip_WWDT_Start(LPC_WWDT);
      /* 使WDT进入睡眠状态知道需要服务时*/
      while (1) {
           LPC_PWRD_API->power_mode_configure(PMU_DEEP_SLEEP,~PMU_PD_WDOSC);
           __WFI();
      }
      return 0;
}

运行结果是:红色LED灯闪烁点亮三秒钟循环。


LPC1500体验+开发环境的构建
LPC1500体验+驱动步进电机设计
LPC1500体验+led闪烁
LPC1500体验+之四_串口调试接收数据成功
LPC1500体验+之五_LCD1602驱动电路设计
LPC1500体验+之六_步进电机驱动设计
LPC1500体验+之七_AD使用初谈
LPC1500体验+之八_WWDT使用初谈


此帖出自NXP MCU论坛

最新回复

请问一下,怎么关闭看门狗?  NVIC_DisableIRQ(WDT_IRQn); 仍然不能关闭   详情 回复 发表于 2022-5-17 21:54
点赞 关注
个人签名每一刻都是崭新的,加油!
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

请问一下,怎么关闭看门狗? 

NVIC_DisableIRQ(WDT_IRQn);

仍然不能关闭

此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表