S3C44b0x通用延时函数,延时time个100us函数理解
来源:互联网 发布:java外包 编辑:程序博客网 时间:2024/05/21 14:04
延时函数如下所示:
void Delay(int time)
{
int i,adjust=0;
if(time==0)
{
time=200;
adjust=1;
delayLoopCount=400;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
rWTDAT=0xffff;
rWTCNT=0xffff;
rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5);
}
for(;time>0;time--)
for(i=0;i<delayloopcount;i++) ;<="" div="" style="word-wrap: break-word;">
if(adjust==1)
{
rWTCON=((MCLK/1000000-1)<<8)|(2<<3);
i=0xffff-rWTCNT;
delayLoopCount=8000000/(i*64);
}
}
s3c44b0x看门狗定时器模块在作为定时器使用时计数器是倒计时的,定时器的频率(产生中断或者复位信号的周期)计算公式如下:
f=MCLK/(Prescaler +1 )/除法因子
rWTCON=((MCLK/1000000-1)<<8)|(2<<3); 设置预分频值为MCLK/1000000-1),设置除法因子为1/64,此时看门狗定时器的时钟频率为1/64MHZ,关闭复位功能,关闭中断。
delayLoopCount=8000000/(i*64)=400*100/(i*64)/200;
当time=0时,执行第一个if条件函数,给time,delayLoopCount赋值,并开启看门狗定时器,该函数执行完之后,便向下执行两层嵌套的for循环,循环执行完毕便转入第二个if条件函数,该函数首先关闭看门狗定时器,然后计算在执行完两层嵌套的for循环的时间内看门狗计数器所计数的个数,最后计数出
当 for(i=0;i<delayloopcount;i++) ;="" 语句耗时100us时delayloopcount的值。所以在main()函数开始的语句中应先设置delay(0);以后在用到dealy(int="" time);="" 时time的值便是延时time个100us的时间。<="" div="" style="word-wrap: break-word;">
我是个初学者,在刚开始看到这个函数时甚是模糊,现在对这个函数有一定的认识,希望对初学者有一定的帮助,文中理解和表达方面有不足之处还请大家指出,不胜感激
0 0
- S3C44b0x通用延时函数,延时time个100us函数理解
- 高精度延时函数的编写,延时约n个10us
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- 延时函数
- WinCE中微秒(us)级的延时函数
- 利用KERNEL32 API函数实现的通用延时函数DELAY
- js的延时函数
- Linux中的延时函数
- Android 新增系统应用
- 如何安装Parallels Tools
- BNUOJ 弱校联萌15-16第三次训练赛同步赛 K题 Kitchen Robot [状压DP]
- 1229 -- An Easy Problem
- 1599 - Ideal Path
- S3C44b0x通用延时函数,延时time个100us函数理解
- Node.js 练习一
- spring、web服务器加载bean顺序
- hdu4508
- 1.6.1 简单自绘控件——无边框对话框关闭按钮
- 约么?智能硬件开发讲座!
- LSBInitScripts
- Redis学习笔记(六)--消息通知
- SVN 回退版本功能