OpenEdv-开源电子网

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

STM32F4+W5500的FreemodbusTCP移植问题

[复制链接]

7

主题

14

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-9-3
在线时间
18 小时
发表于 2020-8-5 14:40:33 | 显示全部楼层 |阅读模式
12金钱
STM32F407+W5500想移植Freemodbus -TCP,编译后无错误提示,但使用modbus pull提示超时
  1. BOOL
  2. xMBPortTCPPool( void )
  3. {  
  4.         unsigned short int us_rlen;
  5.         unsigned char i;
  6.         i=getSIR();

  7.         if(i&0x01)
  8.         {
  9.                 i=getSn_IR(Sn_MR_TCP);        //读W5500中断
  10.                 setSn_IR(Sn_MR_TCP, i);

  11.                 recv(0, aucTCPBuf,us_rlen);        //读新数据放到aucTCPBuf中
  12.                 if(us_rlen==0)
  13.                         return FALSE;
  14.                 usTCPBufLen = us_rlen;                                 //读到新数据,得到长度

  15.                 ( void )xMBPortEventPost( EV_FRAME_RECEIVED );                        //发送已接收到新数据到Modbus-TCP状态机

  16.                 if(i&Sn_IR_DISCON)                /* TCP Disconnect */
  17.                 {
  18.                         listen(1);                //重新监听SOCK 0
  19.                 }
  20.                 if(i&Sn_IR_TIMEOUT)                   //超时
  21.                 {
  22.                         listen(1);                //重新监听SOCK 0
  23.                 }
  24.         }
  25.         return TRUE;
  26. }
复制代码
而后发现处理函数一直未进入,SIR的寄存器的值一直是0x02
  1. /**
  2. * @brief DISCON Interrupt
  3. * [url=home.php?mod=space&uid=168459]@Details[/url] This is issued when FIN or FIN/ACK packet is received from a peer.
  4. */
  5. #define Sn_IR_DISCON                 0x02
复制代码
发现定义上是未连接,但modbus pull的提示是time out表示连接上了,如果未连接应该进不了eMBPoll()。有大佬能指点下吗?或者给份407+W5500的移植例程,谢谢。

QQ截图20200805142928.jpg

ModbusTCP.rar

7.59 MB, 下载次数: 314

个人移植代码

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

使用道具 举报

7

主题

14

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-9-3
在线时间
18 小时
 楼主| 发表于 2020-8-6 15:39:32 | 显示全部楼层
自顶自顶自顶,求大佬帮忙
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-9-11
在线时间
17 小时
发表于 2020-10-5 16:45:01 | 显示全部楼层
/************************************
*函数名:tcp_client
*功能:建立客户端
*输入:
*输出:
************************************/
void tcp_client(void)

应该建立服务端
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-1-3
在线时间
6 小时
发表于 2021-4-11 21:57:19 | 显示全部楼层
/************************************
*函数名:tcp_client
*功能:建立客户端
*输入:
*输出:
************************************/
void tcp_client(void)

应该改为服务端模式
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 20:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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