完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前裸机移植lwip成功了,后来打算在FreeRTOS上移植lwip就把freertos的源文件添加到了工程里,发现裸机配置PHY的延时函数用了systick,现在freertos也要用到systick,于是就把lwip源文件中的USE_DELAY的宏注释掉了,然后看源码是如果把USE_DELAY注释掉则配置PHY的程序中的延时函数就会被一个简单的循环计数的函数替代,但是现在调试程序发现一到延时函数_eth_delay_出 就会进入hardfault_handler,为什么一个简单的循环计数都会让系统进入硬件异常呢?
|
|
相关推荐
11个回答
|
|
你先进入函数,看看,不要执行过这个函数
|
|
|
|
调试的时候一进入这个循环计数的延时函数 就直接执行了hardfault_handler了 我自定义硬件异常函数串口会输出一个错误信息,感觉好怪啊,循环计数都会使程序进入硬件异常
|
|
|
|
哪个循环?
|
|
|
|
ST官方提供的lwip例程里定义了这样一个函数,用于在对ETH外设进行配置之后的延时,在我的工程里一进入这个循环就会进入硬件异常
static void ETH_Delay(__IO uint32_t nCount) { __IO uint32_t index = 0; for(index = nCount; index != 0; index--) { } } |
|
|
|
ST官方提供的lwip例程里定义了这样一个函数,用于在对ETH外设进行配置之后的延时,在我的工程里一进入这个循环就会进入硬件异常
static void ETH_Delay(__IO uint32_t nCount) { __IO uint32_t index = 0; for(index = nCount; index != 0; index--) { } } |
|
|
|
这个函数不应该导致异常才对,你确定是仿真跟踪到这个函数里面了?
|
|
|
|
真的是的,把断点打在for那里 一到这里再继续执行串口就输出硬件异常处理函数的错误信息
|
|
|
|
我怎么感觉,有点像线程竞争,,导致的系统蹦了,你用一个非线性安全的delay,有可能的
|
|
|
|
我还没调用FreeRTOS的API,只是调用了ETH外设的初始化函数,然后执行到这个延时函数就崩溃了
|
|
|
|
|
|
|
|
是不是非法指向,导致硬件错误了
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2569 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2365 浏览 5 评论
3210 浏览 3 评论
2837 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2789 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
668浏览 1评论
905浏览 0评论
1026浏览 0评论
671浏览 0评论
499浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:11 , Processed in 2.790998 second(s), Total 97, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号