本帖最后由 shenwen2011 于 2013-4-18 00:57 编辑
TC定时器中断 本实验完成了对定时器中断的应用,使用定时器中断对LED0进行控制,一秒中亮,一秒钟灭。实验中使用了定时器TC0,它是一个16位的定时器。下面对程序中函数进行说明。本实验中使用了atmelstudio的函数。 tc_enable(&TCC0); 定时器中断时钟的使能 tc_set_overflow_interrupt_callback(&TCC0, example_ovf_interrupt_callback); 定时器中断关联中断函数。中断函数如下。 static void example_ovf_interrupt_callback(void) { gpio_toggle_pin(LED0_GPIO); } 对LED0进行控制,触发LED0状态,使其一亮一灭。 tc_set_wgm(&TCC0, TC_WG_NORMAL); tc_write_period(&TCC0, 31250); 设置定时器工作状态,配置定时器周期,由于定时起哦接的时钟是2Mhz,经过了64分频,所以一秒的计数是31250。为了达到1秒溢出中断,设置的初始值是就是31250。 tc_set_overflow_interrupt_level(&TCC0, TC_INT_LVL_LO); 运行定时器的周期分辨率。 这样编译程序就可以看到led灯的一闪一灭了! 此实验很简单,望大侠指教其中不足。
|