共2条
1/1 1 跳转至页
2131,uc,os 2131+uc/os中的时钟问题
问
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
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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |