找回密码
 立即注册
楼主: wuzhengmin

第一次:环境的创立 | 送实验箱

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 12:06:20 | 显示全部楼层
我们分析一下代码,先看看定时器:

首先配置的是一个TMOPS的一个寄存器,

具体是从系统时钟来分频,还是有点复杂,要多看几遍.....



截图202508141146558028.jpg
截图202508141147331498.jpg
截图202508141205488481.jpg
截图202508141206153679.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 12:17:40 | 显示全部楼层
gate 的概念:


就是定时器的起动,是由外部输入还是内部时钟控制?

我们现在 简单处理: GATE=0 不要外部中断控制启动。TR0 = 1 让它正常启动


        TM0PS = 0x0F;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0x7F;                        //定时器时钟12T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0xDC;                                //设置定时初始值
        TH0 = 0x0B;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断


走完一个周期就自动重新装载:






截图202508141207386442.jpg
截图202508141217309969.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:22:27 | 显示全部楼层
GATE 的说明,在手册里也写的很清晰:


截图202508141322202843.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:28:26 | 显示全部楼层
定时器0的计数器,实际是装载在这2个寄存器里:
截图202508141328215580.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:33:29 | 显示全部楼层
中断请求寄存器(中断标志位)TF0


整个定时器实现的一个过程大致就这样!

截图202508141330232624.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:43:09 | 显示全部楼层
再看看代码:



        TM0PS = 0x5B;                        //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
        AUXR &= 0x7F;                        //定时器时钟12T模式
        TMOD &= 0xF0;                        //设置定时器模式
        TL0 = 0x3F;                                //设置定时初始值
        TH0 = 0x01;                                //设置定时初始值
        TF0 = 0;                                //清除TF0标志
        TR0 = 1;                                //定时器0开始计时
        ET0 = 1;                                //使能定时器0中断
       
        TM0PS = 0X5B = 91,
        AUXR &= 0x7F;                        //定时器时钟12T模式,最高位清0,确定采用12T模式

        12T                 /12
         THO-TL0 = 319


TMOD 的低4位对应:




       

截图202508141338037024.jpg
截图202508141343041526.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:50:30 | 显示全部楼层
计数初始值的计算:

有点复杂,看截图:


截图202508141350239705.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:53:27 | 显示全部楼层
最终算的结果:

等于是不是定时时间就是2.999982秒



误差很小,完全可以接受


截图202508141353008824.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 13:55:52 | 显示全部楼层
其实定时器时间的计算、设定可以很精确,公式看截图:

截图202508141355478428.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:17
  • 最近打卡:2025-08-22 10:12:58
已绑定手机

1

主题

158

回帖

407

积分

中级会员

积分
407
发表于 2025-8-14 14:02:39 | 显示全部楼层
函数的定义,声明、调用
返回值类型   函数名(入口参数)
{

//函数体
//函数执行的代码
return返回值

}

截图202508141359519519.jpg 截图202508141402094688.jpg


回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-24 16:01 , Processed in 0.119392 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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