查看: 975|回复: 0

【SAMD21解密】 - 查询法测试看门狗

[复制链接]

该用户从未签到

发表于 2015-11-25 13:30:44 | 显示全部楼层 |阅读模式
分享到:
int main(void)
  {
      system_init();
      configure_wdt();

       enum system_reset_cause reset_cause = system_get_reset_cause();

      if (reset_cause == SYSTEM_RESET_CAUSE_WDT) {
       port_pin_set_output_level(LED_0_PIN, LED_0_INACTIVE);   //看门狗触发MCU复位,关灯
      }
       else {
       port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);
       }

    while (true) {
        if (port_pin_get_input_level(BUTTON_0_PIN) == false) {
              port_pin_set_output_level(LED_0_PIN, LED_0_ACTIVE);    //按键开灯
            wdt_reset_count();   //复位开门狗
      }
      }
  }

看门狗实际是一个特殊的寄存器,启用开门狗之后,如果没有及时“喂狗”,等开门狗定时器溢出之后,将触发系统复位,
因此看门狗的一个重要用途就是,当我们的程序没有按照预期运行时,让系统复位,防止程序“跑飞”,而不受控制。
我们可以在程序的适当位置不断地喂狗,更新看门狗寄存器值,一直让看门狗保持在不溢出的状态。
本例中,若我们不断地按BTN0键复位开门狗寄存器,LED将一直保持亮,系统便不会复位!
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-20 00:27 , Processed in 0.124002 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.