天嵌 ARM开发社区

 找回密码
 注册
查看: 2281|回复: 4

关于delay函数中的val计算

[复制链接]
Rain_ning 发表于 2010-11-16 10:41:24 | 显示全部楼层 |阅读模式
请问这里的delay函数中在设置val的时候为什么要减去1啊 不理解 麻烦指教 谢谢
void Delay(int time)
{
        U32 val = (PCLK>>3)/1000-1;
       
        rTCFG0 &= ~(0xff<<8);
        rTCFG0 |= 3<<8;                        //prescaler = 3+1
        rTCFG1 &= ~(0xf<<12);
        rTCFG1 |= 0<<12;                //mux = 1/2

        rTCNTB3 = val;
        rTCMPB3 = val>>1;                // 50%
        rTCON &= ~(0xf<<16);
        rTCON |= 0xb<<16;                //interval, inv-off, update TCNTB3&TCMPB3, start timer 3
        rTCON &= ~(2<<16);                //clear manual update bit
        while(time--) {
                while(rTCNTO3>=val>>1);
                while(rTCNTO3<val>>1);
        };
}
fans_run 发表于 2010-11-16 23:23:48 | 显示全部楼层
我也不理解啊,还有具体的延时时间又要怎么算。多谢回答的人!
 楼主| Rain_ning 发表于 2010-11-17 16:43:01 | 显示全部楼层
我只是知道   定时器的频率为=pclk/(prescaler+1)/divider 那么就直接是pclk/4/2即 pclk>>3   
已知pclk=50MHz 也就是定时器频率为50M>>3
那么如果要计时1ms的话 val*(50M>>3)=1000
即val=(50M>>3)/1000
可是为什么后面要减去1呢 麻烦哪位兄弟说一下啊
 楼主| Rain_ning 发表于 2010-11-18 17:59:32 | 显示全部楼层
版主啊  怎么不帮帮菜鸟啊 我是菜 所以才问啊 我是自己解决不了了才问的。。。
天嵌_support1 发表于 2010-11-18 19:24:22 | 显示全部楼层
4# Rain_ning


自己去搜索一下资料,我也不晓得具体的意思。
搜索好了,贴出来分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-11 02:16 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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