共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 |