
你好:使用STM32F103R8T6+ENC28J60+LWIP作网络通讯,现在遇到一个问题:使用CUDE建立的MDK工程,在调试网络部分之前,CAN收发正常。在移植完LWIP 2.1.3之后,网络正常DHCP、TCP、UDP都没有问题,但是,CAN发送却失败了(用测试仪不能接收到数据)。 通过排查,发现当注释掉LWIP初始化代码的mem_init()函数之后,CAN发送就正常了,但是,LWIP肯定就无法正常工作。 有没有可能HAL的CAN通讯,与LWIP有内存方面的冲突? MDK版本5.38,CUDEMX是最新版本。我试过把STM32F107+LWIP,通过CUDE生成的代码中的LWIP和middle ware 部分移植过去,CAN依然无法正常工作(当然,移植可能有些疏漏,网络部分也没有正常工作)。 希望得到您的帮助,谢谢。 HighCloud 2023-9-7 如果需要代码,我会将相关代码作为附件发送 |
关于ASM330LHH TR调试中的问题
STM32会存在单个IO口坏掉的情况吗?
STM32的DCode bus是连接到bus matrix的吗?参考手册描述和图片是不符吗?
stm32ide怎么正确的导出项目
STM32F105RBT6 2025年 ROSH REACH 报告
在其他电脑上编译成功没有错误并且能够烧录,换了电脑之后编译出现一堆错误,并且不能烧录程序
STM32CubeMX 使用"FW_F1 V1.8.6"生成FreeRTOS代码缺少"freertos_mpool.h"?
你好,我的setting里面设置都没有问题。但是显示failed download cortexm3
STM32F103C8出現找不到'STM32100B_EVAL/stm32100b_eval.h' file not found
关于三轴陀螺仪 I3G4250D
1. 在发送数据前,对比CAN 配置寄存器是否正确,包括时钟部分。
2. 看看数据是否正确的传递改发送邮箱,因为邮箱后是硬件自动发送的。
看看CAN的正常执行是否有被改变。
听上去像是栈的size没有重新设置。
楼主配置一下,看看是不是stack溢出了
你不妨调整下堆栈大小,再就是看看CAN使用到的内存数据是否可能被以太网内存动态分配时跟CAN所用内存冲突了。这个恐怕真要看看代码了。
CAN_MCR before init LWIP: 0x00010084 CAN_MSR before init LWIP: 0x00000C08
CAN_MCR after init LWIP: 0x00010084 CAN_MSR after init LWIP: 0x00000008
CAN_MCR before send with LWIP: 0x00010084 CAN_MSR before send with LWIP: 0x00000008
难道LWIP改变了CAN_MSR?这看起来不应该啊。
感谢大家,特别是butterflyspring,我检查了寄存器,发现可能是LWIP改变了寄存器。现在我把
MX_CAN_Init();放在LWIP_INIT();之后,看起来,一切都正常了。但是,问题的根源并没有得到解决。