打印
[STM32]

关于两个串口和ModBus通信问题

[复制链接]
2016|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序会不会|  楼主 | 2016-9-28 11:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32开了两个串口,分别与触摸屏和上位机通信,都是用的Modbus协议,单独两两通信没有问题 ,比如说只和触摸屏通信 ,触摸屏显示的刷新的速度很快,屏上显示的重量值刷新很快,不会有卡顿现象,但是我开了上位机之后卡顿现象特别明显!我现在的程序是这样操作的!

两个串口是相同的优先级,两个串口中断里面就是接受数据:

这个是串口1中断的操作
                Screen_Receive_buff[Screen_rec_counter] = USART1->DR;               
                Screen_rec_counter++;
串口2和串口1一样只是变量不同:
                PC_Receive_buff[PC_rec_counter] = USART2->DR;                       
                PC_rec_counter++;

而modbus的通信程序我是在主循环里面操作:
               if(Screen_rec_counter>7)
                {
                        ModBusRTU(Screen_Receive_buff,Screen_rec_counter);
                }

                if(PC_rec_counter>7)
                {
                        ModBusRTU_PC(PC_Receive_buff,PC_rec_counter);
                }
在主循环里面不停的轮询! 触摸屏和PC的通信我是分开写的(就是上面的两个函数)就是担心两个之间发生冲突!不过还是没有解决

数据显示卡顿应该是当其中一个在通讯时,另一个在等待造成的!这样一个是会造成数据显示卡顿现象,还有可能会使数据丢失!

请教:我现在就想怎么才能使两个通讯相互独立互不干扰! 程序结构怎么写呢?
         搞了两天还是不行,只能来二姨家求助,谢谢!


相关帖子

沙发
xuyaqi| | 2016-9-28 12:50 | 只看该作者
为什么不用485总线呢?

使用特权

评论回复
板凳
程序会不会|  楼主 | 2016-9-28 13:46 | 只看该作者
xuyaqi 发表于 2016-9-28 12:50
为什么不用485总线呢?

和上位机之间用的是485,和触摸屏之间是232 不同的两个单片机串口

使用特权

评论回复
地板
程序会不会|  楼主 | 2016-9-28 16:47 | 只看该作者
问题解决了  卡顿现象主要是我把发送程序也放在了Modbus里面做了 !串口发送程序很耗时间的!所以我把它放在了主循环里!问题解决

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

443

帖子

5

粉丝