写作原因:近来蛋闲?非也  !  昨天一同事合作的项目代码出现的bug-----他的上位机每200ms给我发送命令向我这边下位机读取一些数据,在此过程会按下按键做一些另外操作并给他返回数据;(通信是通过)

1.他定时200ms给我发回指令,我应该给他返回字符串:

@VUMultiGet(Out_1, -inf dBFS, Normal, Out_2, -inf dBFS, Normal, Out_3, -inf dBFS, Normal, Out_4, -inf dBFS, Normal, Out_5, -inf dBFS, Normal, Out_6, -inf dBFS, Normal, Out_7, -47.6 dBFS, Normal, Out_8, -inf dBFS, Normal)

2.随机按下按键我除了做其他操作,应该给他返回字符串:@Load(1)

定时给他返回信息时,随机按下按键出现了以下错误现象:

@VUMultiGet(Out_1, -inf dBFS, Normal, Out_2, -inf dBFS, Normal, Out_3, -inf dBFS, Normal, Out_4, -inf dBFS, Normal, Out_5, -inf dBFS, Normal, Out_6, -inf dBFS, Normal, Out_7, -47.6 dBFS, Normal, Out_8, -inf dBFS, Normal)@Load(1)ultiGet(Out_1, -inf dBFS, Normal, Out_2, -inf dBFS, Normal, Out_3, -inf dBFS, Normal, Out_4, -inf dBFS, Normal, Out_5, -inf dBFS, Normal, Out_6, -inf dBFS, Normal, Out_7, -47.6 dBFS, Normal, Out_8, -inf dBFS, Normal)@VUMultiGet(Out_1, -inf dBFS, Normal, Out_2, -inf dBFS, Normal, Out_3, -inf dBFS, Normal, Out_4, -inf dBFS, Normal, Out_5, -inf dBFS, Normal, Out_6, -inf dBFS, Normal, Out_7, -47.6 dBFS, Normal, Out_8, -inf dBFS, Normal)@

上面红色部分看懂了吗?看出错误了吗? 代码中关于发送信息的部分分别是:

200ms定时返回的数据,串口发送代码如下:
//把格式化的数据写入某个字符串缓冲区
len = sprintf(buf, "@VUMultiGet(%s%d, %.1f dBFS, %s)",
AM_ChnStrTable[i+LAYOUT_INPUT_SIZE],
i+1,
VU.Level,
AM_VUClipStrTable[VU.Clip]);
USART_SEND((uint8*)buf, len); 按键按下,返回信息,串口发送代码如下:
USART_SEND((uint8*)"@Load(0)", sizeof("@Load(0)"));

最终调试找到bug的原因为: 按键按下发送的字符串没有 结束符 导致错误;

所以有感把串口通讯中没有正确发送接收的原因在此总结一下:

接收不到数据,原因:1.用示波器检测,“发送管脚”是否有数据发出;

2.用示波器检测,“接收管脚”是否有数据接收到;

3. 波特率问题---通讯的波特是否一致;

接收的数据不正确,原因:1.可能是外部时钟是否用对,stm32默认的外部晶振是8MHZ,如果错接为12MHZ相应改程序配置,否则串口时钟不对,波特率也不对;

(例如:即表面上设置了用19200波特率通讯,实际时钟不对,波特率实际不是19200)波特率与时钟的关系具体查看我的博客:http://blog.csdn.net/yx_l128125/article/details/9197787

2.用“字符串”通讯时,是否有结束符;

3.使用双串口时,确认串口是否接正确;(串口1、串口2搞混)

4.还有1种可能 请看我的博客:http://blog.csdn.net/yx_l128125/article/details/7914102

STM32菜鸟成长记录---RS485通讯协议的应用

STM32菜鸟成长记录---RS485通讯协议的应用的更多相关文章

  1. RS485通讯协议的应用 (转)

    源:http://blog.chinaunix.net/uid-26921272-id-3506640.html RS485缺点: RS485总线是一种常规的通信总线,它不能够做总线的自动仲裁,也就是 ...

  2. 第41章 RS-485通讯实验—零死角玩转STM32-F429系列

    第41章     RS-485通讯实验 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  3. MODBUS-RTU通讯协议简介

    MODBUS-RTU通讯协议简介   什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...

  4. 基于dubbo框架下的RPC通讯协议性能测试

    一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...

  5. STM32学习笔记(十) CAN通讯测试(环回模式)

    1.CAN通讯的理解 想学习CAN通讯,那么要对通讯协议有一定的认知.通讯协议是指通信双方对数据传送控制的一种约定.约定中包括对数据格式,同步方式,传输速度,传送步骤,检纠错方式以及控制字符定义等问题 ...

  6. Netty 对通讯协议结构设计的启发和总结

    Netty 通讯协议结构设计的总结 key words: 通信,协议,结构设计,netty,解码器,LengthFieldBasedFrameDecoder 原创 包含与机器/设备的通讯协议结构的设计 ...

  7. 几种通讯协议的比较RMI > Httpinvoker >= Hessian >> Burlap >> web service

    一.综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能.RMI是java语言本身提供的远程通讯协 ...

  8. ISO7816通讯协议在工控主板EM9160中的实现方案

    在新的国家电网智能终端相关标准中,规定了通过专门的加密芯片来保证设备数据安全性的方法,而设备主控单元与加密芯片采用了广泛应用的ISO7816通讯协议.工控主板EM9160为了适应这一新的技术需求,对其 ...

  9. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

随机推荐

  1. 详解new/delete(整合)

    C++中内存的动态分配与管理永远是一个让C++开发者头痛的问题,本文通过对C++中内存的动态分配释放的基本原理的介绍,让读者朋友能对C++中的内存的动态分配与释放有较为深入的理解,从而更好驾驭C++程 ...

  2. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  3. nginx gzip on

    # Gzip settings. gzip on; gzip_http_version 1.0;默认值是1.1 gzip_comp_level ; #压缩级别,1压缩比最小处理速度最快,9压缩比最大但 ...

  4. WSDL规则解释(转)

    转自:http://www.blogjava.net/baoyaer/articles/116413.html WSDL文档可以分为两部分.顶部分由抽象定义组成,而底部分则由具体描述组成.抽象部分以独 ...

  5. IT工程师值得一看的书籍

    http://blog.csdn.net/chinahuyong/article/details/45060203

  6. 5.7.2.4 random() 方法

    Math.random()方法返回大于等于0小于1的一个随机数.对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件.套用下面的公式,就可以利用Math.random() ...

  7. 由Mifare 1卡破解带来的危险以及应对方法

    今年年初以来,一个消息的传出震惊了整个IC卡行业.最近,德国和美国的研究人员成功地破解了NXP的Mifare1芯片的安全算法.Mifare1芯片主要用于门禁系统访问控制卡,以及一些小额支付卡,应用范围 ...

  8. javascript - Show mouse cursor in phantom.js - Stack Overflow

    javascript - Show mouse cursor in phantom.js - Stack Overflow Show mouse cursor in phantom.js

  9. JAVA实例变量的初始化过程

    假设有这样一段代码: public class Cat { private String name; private int age; public String toString() { retur ...

  10. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...