新手入门
- 积分
- 12
- 金钱
- 12
- 注册时间
- 2019-9-3
- 在线时间
- 18 小时
|
12金钱
STM32F407+W5500想移植Freemodbus -TCP,编译后无错误提示,但使用modbus pull提示超时- BOOL
- xMBPortTCPPool( void )
- {
- unsigned short int us_rlen;
- unsigned char i;
- i=getSIR();
- if(i&0x01)
- {
- i=getSn_IR(Sn_MR_TCP); //读W5500中断
- setSn_IR(Sn_MR_TCP, i);
- recv(0, aucTCPBuf,us_rlen); //读新数据放到aucTCPBuf中
- if(us_rlen==0)
- return FALSE;
- usTCPBufLen = us_rlen; //读到新数据,得到长度
- ( void )xMBPortEventPost( EV_FRAME_RECEIVED ); //发送已接收到新数据到Modbus-TCP状态机
- if(i&Sn_IR_DISCON) /* TCP Disconnect */
- {
- listen(1); //重新监听SOCK 0
- }
- if(i&Sn_IR_TIMEOUT) //超时
- {
- listen(1); //重新监听SOCK 0
- }
- }
- return TRUE;
- }
复制代码 而后发现处理函数一直未进入,SIR的寄存器的值一直是0x02- /**
- * @brief DISCON Interrupt
- * [url=home.php?mod=space&uid=168459]@Details[/url] This is issued when FIN or FIN/ACK packet is received from a peer.
- */
- #define Sn_IR_DISCON 0x02
复制代码 发现定义上是未连接,但modbus pull的提示是time out表示连接上了,如果未连接应该进不了eMBPoll()。有大佬能指点下吗?或者给份407+W5500的移植例程,谢谢。
|
|