这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 综合技术» 基础知识» 2131,uc,os 2131+uc/os中的时钟问题

共2条 1/1 1 跳转至

2131,uc,os 2131+uc/os中的时钟问题

院士
2006-09-17 18:14:16 打赏
2131,uc,os 2131+uc/os中的时钟问题



关键词: 2131+uc 中的 时钟 问题

院士
2006-12-22 22:43:00 打赏
2楼

1. OSTimeDly(OS_TICKS_PER_SEC/50); 是延时20ms吗?

2. #define OS_TICKS_PER_SEC 200 /* Set the number of ticks*/
/* in one second*/

这个什么意思?一秒钟200个时钟周期???

3. target.c中初始了time0,在 uc/ os系统中有用time0吗?用户可以使用time0吗?


4.
void DelayNS (uint32 dly)
{
uint32 i;

for ( ; dly>0; dly--)
for (i=0; i<50000; i++);
}
DelayNS(50); 是延时20ms吗??
是怎样计算的?
这个计算方法对吗?

1
------------- * 50000 * 50ms=4.5 * 50ms~=22.5ms
11.0592*1000

1: re建议你好好看看系统时钟中断的作用,
time0既然作为系统的时钟中断用,当然不能用作其它的了。。。
//////////////////////////////////////////
4.
void DelayNS (uint32 dly)
{
uint32 i;

for ( ; dly>0; dly--)
for (i=0; i<50000; i++);
}
DelayNS(50); 是延时20ms吗??
是怎样计算的?
这个计算方法对吗?

1
------------- * 50000 * 50ms=4.5 * 50ms~=22.5ms
11.0592*1000
////////////////////////////
这样计算是不对的。。。c指令不是汇编指令,一条指令转化为汇编时候
可能是多条汇编指令,,,
精确延时可以用定时器。。。
2: 谢谢 !
time0作为系统的时钟中断用?
具体在哪个文件实现的? target.c中
void Timer0_Exception(void)
{
T0IR = 0x01;
VICVectAddr = 0; //interrupt cl ose 通知中断控制器中断结束
OSTimeTick();
}
好像与系统有关.

不明白 uc/ os是怎么用time0的,看了Jean J. Labr osse的书,也没明白.
能不能介绍几个相关资料?

关于问题1,2,
#define OS_TICKS_PER_SEC 200
是一秒钟1个节拍,即间隔5ms,Jean J. Labr osse的书P340页说:"将PC的时钟频率从标准的18.20648 Hz改为200Hz."

这里的PC的时钟频率是指硬件定时器还是晶振?在ZLG的 ARM开发板上是多少呢?


如果问题2解决,则很容易理解了:
OS_TICKS_PER_SEC/50=200/50=4个时钟节拍
5ms*4=20ms.
OSTimeDly(OS_TICKS_PER_SEC/50); 延时20ms










共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]