那个polled我查了下字典是:剪去毛的; 无角的; 截角的; 截去树梢的
现在就记住它不是回调的函数,且特别简单的程序好了。
首先选择:新建ASF工程,在ASF向导里加WDT(POLLED)模块。然后APPLY
在ASF EXPLORER中点开QUICK START GUIDE
按照指导上说的,完成程序。注意这个时钟用到 GCLK generator 4
得把 GCLK generator 4 设为使能。
/* Configure GCLK generator 4 */
# define CONF_CLOCK_GCLK_4_ENABLE true
# define CONF_CLOCK_GCLK_4_RUN_IN_STANDBY false
# define CONF_CLOCK_GCLK_4_CLOCK_SOURCE GCLK_SOURCE_OSCULP32K
# define CONF_CLOCK_GCLK_4_PRESCALER 1
# define CONF_CLOCK_GCLK_4_OUTPUT_ENABLE false
然后编译编译通过后,一按复位键小灯闪一下。
/**
* \file
*
* \brief Empty user application template
*
*/
/**
* \mainpage User Application template doxygen documentation
*
* \par Empty user application template
*
* This is a bare minimum user application template.
*
* For documentation of the board, go \ref group_common_boards "here" for a link
* to the board-specific documentation.
*
* \par Content
*
* -# Include the ASF header files (through asf.h)
* -# Minimal main function that starts with a call to system_init()
* -# Basic usage of on-board LED and button
* -# "Insert application code here" comment
*
*/
/*
* Include header files for all drivers that have been imported from
* Atmel Software Framework (ASF).
*/
void configure_wdt(void);
#include <asf.h>
void configure_wdt(void)
{
/* Create a new configuration structure for the Watchdog settings and fill
* with the default module settings. */
struct wdt_conf config_wdt;
wdt_get_config_defaults(&config_wdt);
/* Set the Watchdog configuration settings */
config_wdt.always_on = false;
config_wdt.clock_source = GCLK_GENERATOR_4;
config_wdt.timeout_period = WDT_PERIOD_2048CLK;
/* Initialize and enable the Watchdog with the user settings */
wdt_set_config(&config_wdt);
}
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);
}
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();
}
}
}
|