gaoyang9992006 发表于 2025-1-11 14:39

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();
      }
    }   
}编写代码,编译并运行,达到想要效果。
根据个人体验,还是直接使用硬件定时器比较好理解。

gaoyang9992006 发表于 2025-1-11 14:41

离谱我的变量都变成星号了。

598330983 发表于 2025-1-12 17:57

直接只需要一条绑定中断处理函数的指令就行了,真简单,学会了。

天灵灵地灵灵 发表于 2025-1-14 11:53

这种适合跑RTOS不,定时器也可以用于周期执行任务。

antusheng 发表于 2025-1-16 11:40

看了好多内容,就你的贴有有用的内容

稳稳の幸福 发表于 2025-1-19 19:48

结构体有点看不懂。

yiy 发表于 2025-1-26 15:10

可以试试每一个定时器,或者几个一起上是什么样

598330983 发表于 2025-1-26 19:11

讲解的很到位,今天对照着,练习了一下。

波尔街道的松柏 发表于 2025-7-8 20:48

配置 CTC 模式,设 TOP 值定周期,写 ISR 处理中断,注意预分频比与 OCR 值计算。

734774645 发表于 2025-7-29 10:43

真不错,很好用啊。

yiyigirl2014 发表于 2025-7-29 19:34

准备用一下这个工具。

捉虫天师 发表于 2025-7-29 22:39

每一家的外设命名都不同,我觉得应该统一才好。
页: [1]
查看完整版本: ATMEGA4809的Timer软件定时器使用方法