基于回调函数的lwip

2019-03-24 14:28发布

今天无操作系统基于回调函数的lwip遇到个问题,常量字符串tcp_write+tcp_output能发出去,但是变量字符型数组或指针就没法发送出去,似乎被阻塞了,不知道大家有没有遇到过这个情况 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
zjd0608
2019-03-24 22:00
问题原因也许是由于LWIP的回调函数操作I2C控制器引起的。也许你的程序中,网络收到的命令有的会要求从I2C设备中读取数据,其它任务也可能会操作同一个I2C设备。当I2C操作正在进行时,如果来了一个网络请求也要操作该I2C设备,就有可能会把原来的I2C操作进程打断,插入新的操作,从而导致总线异常。同样道理,操作需要独占的外设的时候也有可能会出现这样的问题。尝试重新初始化I2C控制器,用I2C控制器发起START和STOP和用IO口产生冗余SCL时钟等方法也不能使这些错误标志复位。芯片的系统控制库里找到了可以单独重启I2C模块的函数SysCtlPeripheralReset( SYSCTL_PERIPH_I2C0 )。在检测到I2C控制器错误标志后,先发起START和STOP来释放总线,然后重启并重新初始化MCU的I2C模块,再进行读写操作。这样即使I2C控制器死掉也可以正常操作了。

一周热门 更多>

相关问题

    相关文章