完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在我参与的一个项目里面遇到个奇葩问题:网口初始化时,引脚拉低之后会进行250ms的延时如下:
GPIO_ResetBits(ETH_RST_GPIO_M, ETH_RST_M); //低电平复位W5500 Delay(250); GPIO_SetBits(ETH_RST_GPIO_M, ETH_RST_M); /* Restore W5500 */ Delay(50); 这个Delay函数如下: void Delay( u32 ms){ u32 start; start = systime; while( (sysTime - start) < ms){ } } 当延时为250时,延时1000us delay_10us(100)实测是937.5us,但是把Delay(250)调为Delay(300)时,实测1000us延时得到的结果是1009.375us,结果相差很大。delay_10us函数如下 void delay_10us(vu32 count) { vu32 i; vu16 j; for(i = 0; i < count; i++) { for(j = 0; j < 48; j++) { } } } 网口的初始化延时应该完全不会影响别的东西,然而它做到了,而且影响的还不止delay_10us函数,还影响了我们项目的另外一个功能。有个朋友说是Delay函数调用了系统时钟引起的,不知道是不是这个问题? 然后我的设备初始化是在系统滴答中断(SysTick_Handler)初始化之前的: Peripheral_Init(); /* Initialize driver module */ caculate_record_cnt_in_flash(); CPU_Init(); cpu_clk_freq = BSP_CPU_ClkFreq(); /* Determine SysTick reference freq. */ cnts = cpu_clk_freq / (CPU_INT32U)OSCfg_TickRate_Hz; /* Determine nbr SysTick increments */ OS_CPU_SysTickInit(cnts); 不知道这个网口初始化延时时间为什么影响其它的东西,希望各位大大给点思路,求解求解,谢谢啦 |
|
相关推荐
2个回答
|
|
不好意思,SysTick_init确实是在Delay函数调用之前。上面的描述有问题
|
|
|
|
完全不理解网口的初始化函数怎么就能影响其他功能,各位大大给点思路,我好追查这个问题
|
|
|
|
只有小组成员才能发言,加入小组>>
684 浏览 0 评论
1100 浏览 1 评论
2465 浏览 5 评论
2799 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2638 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
650浏览 9评论
648浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
777浏览 6评论
621浏览 5评论
663浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 23:42 , Processed in 1.036309 second(s), Total 50, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号