【分布式温湿度采集系统】+STM32H745I-LWIP调试过程
[复制链接]
本帖最后由 lansebuluo 于 2022-7-15 22:45 编辑
移植带有操作系统的LWIP程序,这个从网上找了一些其它帖子进行移植,代码编译完成,下载运行,结果不正常,那就要调试代码了。
调试网络经验没有,摸索了几天,终于找到一条路,虽然现在还没有走通,分享给大家,以希望获得更多的讨论。
LWIP协议栈内有很多调试用的代码,怎么开启呢,以STM32H745I-DISCO开发板为例,讲解一下过程。
第一种,使用USART打印
首先,要把printf函数重定义,然后输出调试打印信息。开发板自带虚拟串口,连接了主控芯片USART3。
定义一下硬件外设USART3对应的引脚
硬件初始化代码
USART3初始化代码
重新定义函数fputc
完成这些,可以使用printf函数了,可是再哪里输出呢,可以使用超级终端工具串口接收数据。
第二种 使用开发板自带的信号功能,直接使用IAR的Terminal I/O进行查看打印信息,很方便。
设置工程option,如下图所示
到这里,在IAR调试状态下,选择菜单栏VIEW>>Terminal I/O,打开对应窗口,一定要在DEBUG模式才能选择。
有这些,只是printf函数有输出功能了,还需要定义LWIP的调试开关。
在lwipopts.h文件中,定义DEBUG开关,想调试哪部分,定义对应部分为LWIP_DBG_ON
通过以上,就可以看到你的程序是哪部分出了问题,问题定位到了,还需要自己解决问题。
这里把调试的部分代码贴出来,这个程序是定位到api_msg.c中申请创建二值信号量失败,不知道为什么失败,应该和FreeRTOS的某些定义有关,暂未解决。
问题位置
|