这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 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 close 通知中断控制器中断结束
    OSTimeTick();
}
好像与系统有关.

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

关于问题1,2,
#define OS_TICKS_PER_SEC        200
是一秒钟1个节拍,即间隔5ms,Jean J. Labrosse的书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 跳转至

回复

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