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

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:128
  • 最近打卡:2026-07-01 07:38:53

41

主题

72

回帖

806

积分

高级会员

积分
806
发表于 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
  • 打卡总天数:775
  • 最近打卡:2026-07-20 22:56:32

6

主题

335

回帖

3240

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:775
  • 最近打卡:2026-07-20 22:56:32

6

主题

335

回帖

3240

积分

论坛元老

积分
3240
发表于 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
  • 打卡总天数:129
  • 最近打卡:2026-07-18 22:13:59

9

主题

99

回帖

1153

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:128
  • 最近打卡:2026-07-01 07:38:53

41

主题

72

回帖

806

积分

高级会员

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

谢谢
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:128
  • 最近打卡:2026-07-01 07:38:53

41

主题

72

回帖

806

积分

高级会员

积分
806
发表于 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-7-22 10:36 , Processed in 0.080259 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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