【ASF】XMGEA中WDT的使用

分享到:

给大家介绍ASF中看门狗模块(WDT)的用法:

    1、使用wdt_set_timeout_period函数设置看门狗超时时间。
    2、使用wdt_enable()启用看门狗。
    3、使用wdt_reset()复位看门狗。
    4、其他WDT相关函数:
        1.wdt_set_window_period,设置窗口看门狗
        2.wdt_disable_window_mode,禁止窗口看门狗
        3.wdt_enable_window_mode,使能窗口看门狗
        4.wdt_disable,禁止看门狗
        5.wdt_reset_mcu,使用wdt复位mcu


参考程序,LED0每200ms闪一次。按下SW0,单片机进入死循环,通过看门狗复位。


#include <asf.h>

#define LED1        IOPORT_CREATE_PIN(PORTR, 0)
#define LED2        IOPORT_CREATE_PIN(PORTR, 1)

#define SW0     IOPORT_CREATE_PIN(PORTE, 5)
#define SW1     IOPORT_CREATE_PIN(PORTF, 1)
#define SW2     IOPORT_CREATE_PIN(PORTF, 2)

int main (void)
{
    uint8_t cnt;
    
    sysclk_init();
           board_init();
    ioport_init();

    ioport_set_pin_dir(LED1, IOPORT_DIR_OUTPUT);
    ioport_set_pin_dir(LED2, IOPORT_DIR_OUTPUT);
    ioport_set_pin_level(LED1, true);
    ioport_set_pin_level(LED2, false);
        
    ioport_set_pin_dir(SW0, IOPORT_DIR_INPUT);
    ioport_set_pin_dir(SW1, IOPORT_DIR_INPUT);
    ioport_set_pin_dir(SW2, IOPORT_DIR_INPUT);

    delay_init();
    
    wdt_set_timeout_period(WDT_TIMEOUT_PERIOD_1KCLK);  // 1S
    wdt_enable();
    
    while(1)
    {
        cnt++;
        if(cnt > 20)
        {
            cnt = 0;
            ioport_toggle_pin_level(LED1);            
        }
        delay_ms(10);
        wdt_reset();
        
        if(ioport_get_pin_level(SW0) == 0)
            while(1);
    }
}

 

完整程序下载地址:

https://atmel.eefocus.com/module/forum/thread-5921-1-1.html

 

更多Atmel及科技资讯请关注:  
Atmel中文官网:https://www.atmel.com/zh/cn/
Atmel技术论坛:https://atmel.eefocus.com/
Atmel中文博客:https://blog.sina.com.cn/u/2253031744
Atmel新浪微博:https://www.weibo.com/atmelcn

继续阅读
在ASF中使用GPIO的两种方法

在ASF中,将GPIO的控制封装到函数中,使用API函数来控制GPIO,函数从函数名称就可以看出功能,这样使用GPIO更加直观,简单明了。即使换用不同的芯片,控制函数也是相同的,只要修改GPIO的定义,不用修改程序。在ASF中使用GPIO有两种方式,本文为大家介绍两种方式的使用方法和区别。

可视化的调试助手FreeRTOS+Trace

在AS开发库中,除了直接用于程序嵌入的库和内核以外,还有用来调试的工具。对于FreeRTOS而言,相对的线程和任务调度是比较难于用普通的设置断点,进行参数跟踪来实现的。因此,一种可视化的调试工具就被引入到AS中——FreeRTOS+Trace。

ATxmega之实现实时系统

在xmega上实现一个简单的实时系统,对于一般的mcu已经够使用了。下面主要介绍一个简单实时调度系统的实现过程。

XMEGA PWM模块多通道的用法

本文介绍ASF中PWM模块同时使用多个通道的用法: 1、定义PWM变量,每个通道需要单独定义一个变量 2、使用pwm_init函数初始PWM。如果是同一个PWM模块(定时器),需要使用相同的频率参数。 3、设置每个通道的占空比

Atmel SAM D 系列 EEPROM快速上手指南(基于ASF)

在数据存储应用中,EEPROM用的非常广泛,以前常常需要在电路中外接一个EEPROM芯片,随着MCU技术的发展,EEPROM慢慢集成到了MCU内部,容量也越来越大,逐渐替代之前的单独EEPROM芯片,本帖将利用Atmel SAM D20 Xplained Pro ,对EEPROM 作出简单使用说明。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss