ATMEGA4809的Timer软件定时器使用方法
上一贴我们讨论了时钟与硬件定时器的使用方法,本贴讨论外设里面的Timer框架的使用
上一贴内容访问 https://bbs.21ic.com/icview-3426584-1-1.html
Generate,生成了Timer软件框架,注意这里是采用的类似面向对象的方式的结构体。
unsigned int time_num=0;
unsigned int time_**=0;
void time0_handle(void)
{
time_num++;
if(time_num>=50)
{
time_num=0;
time_**=1;
}
}
int main(void)
{
SYSTEM_Initialize();
Timer0.TimeoutCallbackRegister(time0_handle);
Enable_global_interrupt();
while(1)
{
if(SW_GetValue())
{
if(time_**==1)
{
YELLOW_LED_Toggle();
time_**=0;
}
//DELAY_milliseconds(500);
}
else
{
YELLOW_LED_SetHigh();
}
}
}编写代码,编译并运行,达到想要效果。
根据个人体验,还是直接使用硬件定时器比较好理解。
离谱我的变量都变成星号了。 直接只需要一条绑定中断处理函数的指令就行了,真简单,学会了。 这种适合跑RTOS不,定时器也可以用于周期执行任务。 看了好多内容,就你的贴有有用的内容 结构体有点看不懂。 可以试试每一个定时器,或者几个一起上是什么样 讲解的很到位,今天对照着,练习了一下。 配置 CTC 模式,设 TOP 值定周期,写 ISR 处理中断,注意预分频比与 OCR 值计算。 真不错,很好用啊。 准备用一下这个工具。 每一家的外设命名都不同,我觉得应该统一才好。
页:
[1]