OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4370|回复: 2

LWIP的定时器卡住,导致所有功能无法执行

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2019-11-2
在线时间
25 小时
发表于 2023-4-28 14:09:56 | 显示全部楼层 |阅读模式
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通。
请教下,有没有人遇到类似的情况,这是芯片问题还是软件问题啊?后续怎么排查啊?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2019-11-2
在线时间
25 小时
 楼主| 发表于 2023-4-28 22:53:39 | 显示全部楼层
很奇怪的事情,在定时器的中断处理函数内部:lwip_localtime += 10;这条语句后面,需要随意再加个语句,比如置位一个标志,就能够好了。不加语句,就可能随机停止,可能第一次就停,也可能是跑了几次停。
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4477
金钱
4477
注册时间
2013-4-22
在线时间
336 小时
发表于 2023-4-29 23:09:18 | 显示全部楼层
驱动问题吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-19 21:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表