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();
- }
下进开发板,则程序同预想的一样,定时一段时间就亮,然后就灭。
|