延时函数,占空比不是50%
void DelayUs(uint32 iDly){
int32 i;
for( ; iDly>0; --iDly)
for(i=4;i>0;--i);
__asm //C语言中嵌入汇编格式
{
NOP
NOP
NOP
NOP
NOP
}
}
*/
void DelayUs(uint32 iDly)
{
int32 i;
iDly-=1;
while(iDly--)
{
for(i=6;i>0;i--);
__asm
{
NOP
NOP
NOP
}
}
for(i=1;i>0;i--);
/* __asm
{
NOP
}*/
}
分别用上述两个延迟函数产生方波,第一个延迟函数产生的不是占空比位50%的方波,高电平时间多于低电平时间,第二个延迟函数产生的是50%的方波;刚开始以为都是50%占空比,请高手指点 看不出来你的方波是怎么产生的. 如果不一致,那就是中断影响的。 方波在哪,没有看到啊 ayb_ice 发表于 2013-12-2 10:54 static/image/common/back.gif
方波在哪,没有看到啊
我的意思是利用一个GPIO先给高电平,采用采用延迟函数延迟一段时间(DelayUs(100)),在给GPIO低电平,在延迟一段时间(DelayUs(100)),分别采用上述两种延迟函数,采用第二个延迟函数得到的是方波,但是第一个得到的是高电平时间多余低电平时间 huangxz 发表于 2013-12-1 11:32 static/image/common/back.gif
如果不一致,那就是中断影响的。
没用中断,就是GPIO口先拉低,延迟一段时间,接着拉高,再延迟一短时间,如此循环反复. 可能你这两个函数延时时间本来就不一样,
同样的误差造成的感觉不一样罢了 ayb_ice 发表于 2013-12-4 08:12 static/image/common/back.gif
可能你这两个函数延时时间本来就不一样,
同样的误差造成的感觉不一样罢了 ...
什么意思,难道第一次使用DelayUs(10)和第二次使用DelayUs(10)产生的时间不一样
页:
[1]