初级会员

- 积分
- 97
- 金钱
- 97
- 注册时间
- 2019-11-2
- 在线时间
- 25 小时
|
1金钱
目前手上有两种板子,分别称为A板与B板。
A板:STM32F407ZGT6,使用一个LED,printf使用USART1,LWIP的UDP方式,PHY采用DP83848,定时器采用TIM3,定时器中断只累加lwip_localtime。
B板:STM32F407ZET6,使用一个LED,printf使用USART3,LWIP的UDP方式,PHY采用DP83848,定时器采用TIM3,定时器中断只累加lwip_localtime。
两个芯片只是flash的容量不一样,RAM是一样的。
为了程序保证一致性,其他功能全部屏蔽,未做初始化,这样A板与B板只是printf使用的串口不一样,其余管脚都是用的一样的。
程序描述如下:
前面的初始化之类分别就是GPIO,UASRT,定时器与LWIP,配置IP等。
进入while(1)后,


send_status_buf是一个200字节的数组,目前定义的是字符串常量,比如:'{12234asfhjhgghjjiiuyiii2e34446667}'这样,只是字节数很多,实际在100到200之间。
现象描述:
A板程序正常,start与end每秒出现,ping单片机的IP也正常,电脑端开的网络调试助手,也能收到信息。
B板,程序烧录下去后,只能看到进入while(1)之前的一条串口信息'run!',后面就不再打印了。
用仿真看,断点打在printf("start!\r\n"); 点击全速运行,等待一会仍跑不到该断点处,点击停止,发现进入了HardFault_Handler。
此时怀疑是不是芯片挂了,然后改了下程序,屏蔽定时器的初始化,直接使用delay,串口与led都能运行了,lwip开始居然也能ping通,但是一段时间后,lwip就无法再ping通。
请教下,有没有人遇到类似的情况,这是芯片问题还是软件问题啊?后续怎么排查啊?
|
|