完善资料让更多小伙伴认识你,还能领取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函数调用之前。上面的描述有问题
|
|
|
|
|
|
完全不理解网口的初始化函数怎么就能影响其他功能,各位大大给点思路,我好追查这个问题
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1020浏览 1评论
1849浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1359浏览 1评论
1851浏览 0评论
1177浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:41 , Processed in 0.557828 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6552