Atmel START是一个网页编程环境,超简单实用,关于用法可参考前几篇。
今天,跑个定时器.首先打开START.ATMEL.com
加入定时器模块:
定时器模块按默认值。
为了形象观察,用LED0作为指示灯,看看程序是否正确,注意SAMD21是PB30我选了PA30搞了半天哈:
然后下载用STUDIO7导入ZIP文件,然后在程序里加入自己的东东:
部分程序源码如下:
static void TIMER_0_task2_cb(const struct timer_task *const timer_task)
{
gpio_toggle_port_level(GPIO_PORTB,PORT_PB30 );
}
void TIMER_0_example(void)
{
TIMER_0_task1.interval = 100;
TIMER_0_task1.cb = TIMER_0_task1_cb;
TIMER_0_task1.mode = TIMER_TASK_REPEAT;
TIMER_0_task2.interval = 200;
TIMER_0_task2.cb = TIMER_0_task2_cb;
TIMER_0_task2.mode = TIMER_TASK_REPEAT;
timer_add_task(&TIMER_0, &TIMER_0_task1);
timer_add_task(&TIMER_0, &TIMER_0_task2);
timer_start(&TIMER_0);
}
void system_init(void)
{
init_mcu();
// GPIO on PB30
// Set pin direction to output
gpio_set_pin_direction(LED0, GPIO_DIRECTION_OUT);
gpio_set_pin_level(LED0,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
false);
gpio_set_pin_mux(LED0, GPIO_MUX_OFF);
TIMER_0_init();
TIMER_0_example();
}
下进开发板,则程序同预想的一样,定时一段时间就亮,然后就灭。
|