天线|RF射频
直播中

潘小旋

7年用户 178经验值
私信 关注
[问答]

为什么ENC28J60 LWIP的例程时程序到dhcp_start(&lwip_netif)就跳入hardfault_handler?

例程时mini板上的ENC28J60的LWIP的库函数例程,用的是SPI1,我改成寄存器版的换成SPI2;程序打印出了enc28j60的版本信息和全双工通信,到了dhcp_start()这个函数就跳入hardfault_handler了,求教我下一步改如何去分析解决问题。

回帖(5)

李桂珍

2019-8-21 08:33:22
终于找到原因了,后面发现在ENC28J60_Packet_Send()和ENC28J60_Packet_Receive()函数中的INTX_DISABLE();和INTX_ENABLE();开关中断的函数,这两个函数在sys.c中,
寄存器版本的sys.c和库函数版本的sys.c开关中断语句不同,把库函数的那几句换到寄存器的就没出现hardfault了,这两个版本的开关中断语句如下图,请教下有什么不同:
举报

林茜

2019-8-21 08:49:02
仔细检查一下你 移植的时候的数据发送和接收是不是 正常的
举报

高志新

2019-8-21 08:55:38
请问怎么检查的?
举报

胡燕珍

2019-8-21 09:04:59
奇怪,用库函数,SPI1,SPI2,SPI3都可以 ,换成寄存器就是上面的现象,两个版本不同的地方就是SPI初始化和外部中断不同,哎为什么这样子捏!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分