[PIC®/AVR®/dsPIC®产品] ATMEGA4809的Timer软件定时器使用方法

[复制链接]
 楼主| gaoyang9992006 发表于 2025-1-11 14:39 | 显示全部楼层 |阅读模式


上一贴我们讨论了时钟与硬件定时器的使用方法,本贴讨论外设里面的Timer框架的使用
上一贴内容访问    https://bbs.21ic.com/icview-3426584-1-1.html

Generate,生成了Timer软件框架,注意这里是采用的类似面向对象的方式的结构体。

  1. unsigned int time_num=0;
  2. unsigned int time_**=0;

  3. void time0_handle(void)
  4. {
  5.     time_num++;
  6.     if(time_num>=50)
  7.     {
  8.         time_num=0;
  9.         time_**=1;
  10.     }
  11. }
  12. int main(void)
  13. {
  14.     SYSTEM_Initialize();
  15.     Timer0.TimeoutCallbackRegister(time0_handle);
  16.     Enable_global_interrupt();

  17.     while(1)
  18.     {
  19.         if(SW_GetValue())
  20.         {
  21.             if(time_**==1)
  22.             {
  23.                 YELLOW_LED_Toggle();
  24.                 time_**=0;
  25.             }            
  26.             //DELAY_milliseconds(500);
  27.         }
  28.         else
  29.         {
  30.             YELLOW_LED_SetHigh();
  31.         }
  32.     }   
  33. }
编写代码,编译并运行,达到想要效果。
根据个人体验,还是直接使用硬件定时器比较好理解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 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 | 显示全部楼层
每一家的外设命名都不同,我觉得应该统一才好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2047

主题

16361

帖子

221

粉丝
快速回复 在线客服 返回列表 返回顶部