找回密码
 立即注册
查看: 130|回复: 5

求教自适应定时器的设置 | 没有问题

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2026-03-03 15:33:30

52

主题

50

回帖

754

积分

高级会员

积分
754
发表于 2026-2-10 19:37:18 | 显示全部楼层 |阅读模式
我现在用T0定时器,现在是1ms中断一次,我想改成20ms中断一次,请教老师吗如何改



#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))       //Timer 0 中断频率, 1000次/秒


void Timer0_Init(void)
{
        
           // Timer0初始化
    TMOD &= 0xf0;                                                                      //设置定时器模式
    T0x12 = 1;                                                                   //定时器时钟1T模式
    TH0 = (u8)(Timer0_Reload / 256);
    TL0 = (u8)(Timer0_Reload % 256);
                TF0 = 0;                                                                                                        //清除TF0标志
    ET0 = 1;                                                        //使能定时器0中断
    TR0 = 1;                                                                                                   //定时器0开始计时
}


回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:665
  • 最近打卡:2026-03-07 13:10:17

6

主题

320

回帖

2949

积分

金牌会员

积分
2949
发表于 2026-2-10 20:32:40 | 显示全部楼层
改这句#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:665
  • 最近打卡:2026-03-07 13:10:17

6

主题

320

回帖

2949

积分

金牌会员

积分
2949
发表于 2026-2-10 20:46:14 | 显示全部楼层
将这句
  1. #define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))
复制代码

改成
  1. #define T0_ms 20
  2. #define Timer0_Reload (65536UL-(T0_ms*MAIN_Fosc/1000))
复制代码

这样试试但是定不了20最大为5ms
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2026-03-06 08:05:01

9

主题

73

回帖

905

积分

高级会员

积分
905
发表于 2026-2-11 08:31:11 | 显示全部楼层
你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频率可以设置为12M或者24M
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2026-03-03 15:33:30

52

主题

50

回帖

754

积分

高级会员

积分
754
发表于 2026-2-11 10:51:21 | 显示全部楼层

谢谢
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:115
  • 最近打卡:2026-03-03 15:33:30

52

主题

50

回帖

754

积分

高级会员

积分
754
发表于 2026-2-11 10:51:34 | 显示全部楼层
青穗*** 发表于 2026-2-11 08:31
你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频 ...

测试过了,没有问题,谢谢
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-7 15:32 , Processed in 0.105617 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表