单片机与威纶通触控屏通过RS485(1号线接B-,2号线接A+)通讯,协议采用modbus。

单片机做从机,威纶通触控屏做主机,只能主机访问从机,从机不能主动访问主机。站号对应着单片机的地址

Modbus 没有结束标志位,判断一帧数据是否传输完成取决于单片机是否在3.5个字符(大概4ms)的时间内收到数据,如果大于3.5个字符的时间内没有收到数据可以判定一帧数据接收完成。这个时候需要借助定时器,从没有接收到数据开始计时。

void TIM2_IRQHandler()//定时器2的中断服务子函数  1ms一次中断
{u8 st;st= TIM_GetFlagStatus(TIM2, TIM_FLAG_Update);   if(st==SET){TIM_ClearFlag(TIM2, TIM_FLAG_Update);if(modbus.timrun!=0){modbus.timout++; if(modbus.timout>=8)  //间隔时间达到了时间{modbus.timrun=0;//关闭定时器--停止定时,等到下次接受一帧新的数据时定时器才继续启动modbus.reflag=1;  //收到一帧数据,这个时候event函数才能向下运行}}         }
}

这是定时器中断服务函数,这里设定的时大于8ms没有收到数据表示一帧数据接收完成,

void USART2_IRQHandler() //MODBUS字节接收中断
{u8 st,sbuf;st=USART_GetITStatus(USART2, USART_IT_RXNE);if(st==SET)  //{          sbuf=USART2->DR;if( modbus.reflag==1)  //有数据包正在处理,不接收新数据{return ;}             modbus.rcbuf[modbus.recount++]=sbuf;modbus.timout=0;     //不断的对定时器中的modbus.timout做归0操作if(modbus.recount==1)  //收到主机发来的一帧数据的第一字节{modbus.timrun=1;  //启动定时}}
}
void Mosbus_Event()
{u16 crc;u16 rccrc;if(modbus.reflag==0)  //没有收到MODbus的数据包{return ;}crc= crc16(&modbus.rcbuf[0], modbus.recount-2);       //计算校验码rccrc=modbus.rcbuf[modbus.recount-2]*256 + modbus.rcbuf[modbus.recount-1];  //收到的校验码if(crc ==  rccrc)  //数据包符号CRC校验规则{ if(modbus.rcbuf[0] == modbus.myadd)  //确认数据包是否是发给本设备的 {switch(modbus.rcbuf[1])  //分析功能码{case 0:     break;case 1:     break;case 2:     break;case 3:     Modbud_fun3();    break;   //3号功能码处理case 4:     break;case 5:     break;case 6:     Modbud_fun6();     break;   //6号功能码处理case 7:     break;           //....              }}else if(modbus.rcbuf[0] == 0)   //广播地址{}}modbus.recount=0;   //modbus.reflag=0;
}

代码下载别人的,第一次写博客,为了更好的理解,有什么问题欢迎讨论

STM32与威纶通触控屏通讯相关推荐

  1. STM32模拟USB多点触控屏

    STM32模拟USB多点触控屏 开发准备 STM32的USB官方例程库JoyStickMouse STM32F103RC Windows7 代码修改 1.usb_pwr.c RESULT PowerO ...

  2. 昆仑通态MCGS嵌入式触控屏不能自动保存初值问题解决办法

    使用型号为7072GT的触控屏时,在实时数据库中创建几个整数型变量作为配置参数,并勾选其"变化时自动保存初值"选项. 但是在用户窗口中将其绑定并修改数值后,给触控屏断电重启,发现初 ...

  3. pyaudio usb playback_5.5寸触控屏IP电话会议USB全向麦克风NK-OAM600U_影视工业网

    寸触控屏视频会议USB全向麦克风(拾音器)NK-OAM600U 概述: 派尼珂NK-OAM600U视频会议USB全向麦克风,是一款配置多点手势触控FHD屏的高清会议电话,便捷的连接方式:支持USB/以 ...

  4. lenovo thinkpad t460s opensuse linux 下禁用多点触控屏

    KDE对多点触控屏的支持没有windows那么优秀,只能使用类似鼠标的单击操作. 下面是直接使用xinput禁用. thinkt@linux-pw37:/usr/share/X11/xorg.conf ...

  5. matebook14支持触摸屏吗_2020款的matebook14增加了多点触控屏是最大亮点

    华为matebook14终于获得了Windows的授权,而且更新十代酷睿处理器,更加值得一提的是,MateBook13/14版新增了触屏这一操作黑科技,也就是说,我们以后用的电脑也可以像手机一样,直接 ...

  6. 威纶和s7200通讯线_S7-200与威纶通触摸屏之间的通讯.doc

    S7-200与威纶通触摸屏之间的通讯 使用Modbus协议建立S7-200与威纶通触摸屏之间的通讯 HYPERLINK "/Forum/UserInfo.aspx?u=20100809134 ...

  7. 测试触控延时的软件,重点测试:触控屏响应时间_笔记本评测-中关村在线

    ★重点测试:触控屏响应时间 触控型笔记本除了有一块触控屏外,传感器及控制IC部分是十分重要的.整套电路设计优劣会直接会影响到触控的响应时间.下面就来进行实际测试,为了这个环节我们特意找到了一套专业的滑 ...

  8. 触控屏全贴、框贴及0贴合工艺概述

    从屏幕的结构上看,我们可以把屏幕大致分成三部分,从上到下分别是保护玻璃,TP.显示屏.而这三部分是需要进行贴合的. 一.贴合工艺汇总: 触控屏按贴合的方式可以分为全贴合和0贴合.框贴三种: 全贴合工艺 ...

  9. Infocomm前瞻:迪威视讯重推120吋激光触控屏

    日前,全球领先的激光显示设备供应商迪威视讯对外宣布,其将在Infocomm China 2016上推出120吋全景多点激光触控屏产品. 据悉,该产品集成行业用户的最终需求,软硬件相结合,配置灵活,集成 ...

最新文章

  1. sybase游标使用方法
  2. 学习Linux课程第十二天
  3. HDU - 3804 Query on a tree(树链剖分+线段树+离线处理)
  4. revit建筑样板_黄石建筑工地工艺样板怎么做可按需定制
  5. 嵌入式软件工程师2021面试指南【转】
  6. 中国十大名校“互撕”往事
  7. acegis连接使用方法_arcgis工具使用方法
  8. PHP留言板系统设计图,简单实现PHP留言板功能
  9. 一、Multisim软件介绍
  10. c语言程序设计总结与体会,c语言程序设计个人总结
  11. 军用设备环境试验方法湿热试验标准
  12. 软件推荐:Picasa
  13. 西安交大计算机2000年山西专业录取分数,西安交大在山西各专业录取分数.doc
  14. 如何在 IDE 中将程序打成 jar 包 Library handing 三种方式讲解 如何编写 MANIFEST.MF
  15. [MATLAB作业二]求解线性代数问题
  16. 积分-钉钉考勤-加分
  17. 第三代电力电子半导体:SiC MOSFET学习笔记(四)SiC MOSFET传统驱动电路保护
  18. 关于互相帮忙投票的微信群、微信刷投票群、微信投票刷票群的详情介绍
  19. 2021年最新UI/UE设计软件全家桶
  20. 3个烟花代码,我已上传,也可复制代码

热门文章

  1. 淘宝/天猫api数据接口,获得淘宝商品详情 API 返回值说明
  2. 路由器限速--提高你的网速
  3. EN 13226木地板带有凹槽与舌状连接的实木地板
  4. 数据库恢复时的四种转储方法
  5. 蓝桥杯 — 星系炸弹( 在X星系的广袤空间中漂浮着许多X星人造“炸弹”)
  6. 2011腾讯海笔 大概题型(欢迎讨论)
  7. oracle强制关闭用户连接
  8. linux开通本地ip连接,SSH 连接本地虚拟机 Linux
  9. 记一次破解前端加密详细过程
  10. 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系