新塘N76E003 芯片的定时器 初始化不正确 估计是分频问题

本文探讨了新塘N76E003芯片中定时器0初始化不准确导致的时间误差问题。作者发现实际定时时间与预期相差较大,后经研究发现默认存在12分频,而非预期的1分频。通过修改代码并理解分频设置,作者解决了定时器的精度问题。示例代码展示了如何正确设置100us和1ms的延时函数。

新塘N76E003 芯片的定时器 初始化不正确,原因找到了,但内心还是不明白。

比如定时器0

            //设置定时器0和1为16位模式
          TMOD |= 0x01;        //Timer0 Mode1
            //定时器0中断允许
            ET0=1;      
            TH0=(65536-1000)/256; // 0xff;
            TL0=(65536-1000)%256; // 0xf1;
            //开始计数
            TR0=1;
                //总中断开
            EA=1;

系统是内部时钟16m,时钟分频没有设置默认为0 应该是运行时钟应该是1/16m = 0.0625us

上面初始化 1000数值 应该定时时间 1000*1/16m = 0.0625*1000 = 62.5us  但是 示波器测试得到的时间是760us ,百思不得其解

后面网上看到信息,说是分频系数问题,1000*1/16m/12 = 1000*12/16m = 750us  时间差不多,应该是分频 默认是12分频

但是具体在哪里已经设置了呢,我不得而知,不知道,有知道的大神告知下,谢谢

参考

//-------------------------------------------------------------------------
void Timer0_Delay100us(UINT32 u32CNT)
{
    clr_T0M;                                        //T0M=0, Timer0 Clock = Fsys/12
    TMOD |= 0x01;                                   //Timer0 is 16-bit mode
    set_TR0;          

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值