OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2783|回复: 1

战舰版,延时函数不正确,微秒延时问题

[复制链接]

16

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
270
金钱
270
注册时间
2019-9-1
在线时间
61 小时
发表于 2020-6-24 06:55:54 | 显示全部楼层 |阅读模式
1金钱
大家好,请教大家一个问题,这是战舰版里面的微秒延时函数,怎么用逻辑分析,显示延时不对呢,在主函数里while下,只写                delay_us(4);
                LED0=!LED0;//DS0éá˸这两句,延时4us,分析仪显示80us和120us,毫秒延时正常,这是哪里的问题,请解释一下
阿里旺旺图片20200624065339.jpg

//Ñóê±nus
//nusÎaòaÑóê±μÄusêy.                                                                                      
void delay_us(u32 nus)
{               
        u32 ticks;
        u32 told,tnow,tcnt=0;
        u32 reload=SysTick->LOAD;                                        //LOADμÄÖμ                     
        ticks=nus*fac_us;                                                         //DèòaμĽúÅÄêy                           
        tcnt=0;
        delay_osschedlock();                                                //×èÖ1OSμ÷¶è£¬·àÖ1′ò¶ÏusÑóê±
        told=SysTick->VAL;                                                //¸Õ½øèëê±μļÆêyÆ÷Öμ
        while(1)
        {
                tnow=SysTick->VAL;       
                if(tnow!=told)
                {            
                        if(tnow<told)tcnt+=told-tnow;                //&#213;aà&#239;×¢òaò&#187;&#207;&#194;SYSTICKê&#199;ò&#187;&#184;&#246;μY&#188;&#245;μ&#196;&#188;&#198;êy&#198;÷&#190;í&#191;éò&#212;á&#203;.
                        else tcnt+=reload-tnow+told;            
                        told=tnow;
                        if(tcnt>=ticks)break;                                //ê±&#188;&#228;3&#172;1y/μèóúòa&#209;ó3ùμ&#196;ê±&#188;&#228;,&#212;òí&#203;3&#246;.
                }  
        };
        delay_osschedunlock();                                                //&#187;&#214;&#184;′OSμ÷&#182;è                                                                            
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-25 00:56:15 | 显示全部楼层
us级别延时函数,越小越不准,因为MCU执行代码就需要时间,一般4us延时会在8~10us比较正常,但是ini这个80有点异常。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 06:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表