本帖最后由 hu9jj 于 2019-10-17 09:42 编辑
之前曾发帖说过找不到定时器在哪设置,后来照EEWORLD论坛的帖子终于了解到在MCC中定时器的名称是TCA和TCB,在ATemge4809中有TCA0和TCB0~3共五个定时器,本次测试仅仅启用了TCA0(见下图):
这个设置比较简单,只要设置延时的时间就行了,在默认主频下,延时可在600ns至19.661ms之间任意设置,后来在浏览坛友帖子后才知道只要设置主频的分频系统就可以改变延时的范围(参见下图):
例如我们将主频进行1024分频,最大的延时就可以达到秒级。本次测试我设置的定时是10毫秒。
然后在下面的Global Interrupt Enable打勾:
之后在TCA0——OVFI后面打勾,配置就基本完成了,生成基本代码后,就可以添加用户代码了。我在主程序中定义了一个全局变量ten_ms,然后在tca0.c文件中的下面函数中添加ten_ms_++语句:
void TCA0_DefaultOVFIsrCallback(void)
{
//Add your ISR code here
ten_ms++;
}
之后就可以在主循环中对ten_ms变量进行判断,达到预定值之后就改变LED的状态,实现LED的闪烁了:
if((ten_ms*100)>delays){
IO_PF5_Toggle();
ten_ms = 0;
}
这样就实现了用定时器计数的方式达到延时目的,避免了使用低效率的空循环延时。
|