static void Rs4851Send(unsigned char *p,unsigned char length)

{

///TIM_SetCounter(TIM(RS4851_TIM_NO),0X01);          //如果没有这句,下面延时程序会产生一帧数所结束中断(但实际数据还没发出去)

//现在可以不要了,因为在外部中断服备程序中添加,主要是那个原因

EnableRs4851Tx();        //20140903                                                        //使能485发送

DelayMs(2);

///TIM_SetCounter(TIM(RS4851_TIM_NO),0X01);          //如果没有这句,下面延时程序会产生一帧数所结束中断(但实际数据还没发出去)

//现在可以不要了,因为在外部中断服备程序中添加,主要是那个原因

Rs4851Mac.mRs485TxCount = length;

//Rs4851Mac.mPRs485Send = p;

ptmp = p;

USART_SendData(USART(RS4851_TX_PIN), *ptmp++);//*(Rs4851Mac.mPRs485Send)++);

USART_ITConfig(USART(RS4851_TX_PIN), USART_IT_TXE, ENABLE);                          //开始为发送中断

}

static void Rs4851SendIsr(void)

{

if(USART_GetITStatus(USART(RS4851_TX_PIN), USART_IT_TXE) != RESET)

{

Rs4851Mac.mRs485TxCount--;

if(Rs4851Mac.mRs485TxCount>0)                 //如果大于0,则数据没发送完,

{

USART_SendData(USART(RS4851_RX_PIN), *ptmp++);//*(Rs4851Mac.mPRs485Send)++);

}

if(Rs4851Mac.mRs485TxCount==1)                 //如果是最后一个数据

{

USART_ITConfig(USART(RS4851_RX_PIN), USART_IT_TXE, DISABLE);         //禁止发送中断

USART_ITConfig(USART(RS4851_TX_PIN), USART_IT_TC, ENABLE);                 //开启发送完成中断

}

}

if(USART_GetITStatus(USART(RS4851_TX_PIN), USART_IT_TC) != RESET)                          //如果是发送完成中断,

{

USART_ITConfig(USART(RS4851_RX_PIN), USART_IT_TC, DISABLE);                                //说明是最后一个数据,

delay_us(10);                                                                           //因为是等待发送完成,所以可以延时的时间短些

DisableRs4851Tx();                                                                //禁止485发送

}

TIM_SetCounter(TIM(RS4851_TIM_NO),0X01);          //如果没有这句,下面延时程序会产生一帧数所结束中断(但实际数据还没发出去)

//现在可以不要了,因为在外部中断服备程序中添加,主要是那个原因

}

stm32 串口通信数据移位寄存器_STM32串口接RS485丢码问题已解决*_*相关推荐

  1. stm32串口通信(初学者对于串口通信的理解)

    stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报  分类: stm32 版权声明:本文为博主原创 ...

  2. (RS485 232串口通信数据解析实用干货(1)

    文章目录 (RS485 232串口通信数据解析实用干货(1) 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 ...

  3. stm32中断方式的串口通信——上位机控制串口收发

    文章目录 前言 一.什么是串口通信 二.什么是中断--STM32 1.中断的概念 2.STM32下NVIC的介绍 3.中断优先级的介绍 4.外部中断的介绍 三.串口通信keil工程文件 1.新建工程模 ...

  4. C#串口通信数据不完整

    下面代码是我使用C#开发串口通信写的代码,在实现串口通信过程中,在数据接收线程中, 未加这条语句Thread.Sleep(50);我使用串口工具调试 ,串口通信正常,但是在与实际单片机通信过程中,出现 ...

  5. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例

    通信协议 串口通信详解 IIC通信详解 SPI通信详解 CAN通信详解 文章目录 通信协议 什么是串口? 串口分类 USART/UART.RS232.RS485的区别 串口协议原理 传输协议 需要定义 ...

  6. 利用python程序、虚拟串口软件、串口通信助手,实现串口通信(两串口互相收发文字)

    一.流程简述 程序可以参考: https://blog.csdn.net/colcloud/article/details/42454839 这是我参考后简化的版本: https://github.c ...

  7. js 串口通信mscomm接收undefined_串口通信帧的同步方法(识别一帧数据的起始结束)42...

    串口通信是单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式.在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同 ...

  8. 串口---串口通信数据位长度对传输数据的影响

    文章来源:https://blog.csdn.net/petershina/article/details/8612357 针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看 ...

  9. 串口通信数据位长度对传输数据的影响

    http://blog.csdn.net/petershina/article/details/8612357 针对串口通信,关于设置数据位长度对通信的影响,如图: 在串口数据通信中,会看到串口参数设 ...

最新文章

  1. java火山_各种排序算法java实现
  2. 通用客户端表单验证函数修正版
  3. javascript 判断为负数_JavaScript从零开始——标准库(7)
  4. 3COM小型企业有线局域网方案(三、四、五)
  5. go读取excel_Golang操作Excel
  6. 怎么样修改PuTTY的默认字体和字符集
  7. Laravel 开发扩展包基本流程
  8. uml类图用什么软件画_为什么需要UML类图建模?
  9. html标签元素分类
  10. pdfjs预览pdf乱码_卓师兄pdf转换大师app下载-卓师兄pdf转换大师安卓版 v1.0.0
  11. spss分析方法-因子分析(转载)
  12. mysql建表语句转换成oracle,如何手动将ORACLE的sql建表语句转换为MYSQL的建表语句...
  13. OpenCV4学习笔记(71)——散焦图像去模糊滤波
  14. 全自动共享软件破解器4.8
  15. python显示图片固定大小
  16. 字典攻击—Python
  17. python模拟硬件实现btb和tomasulo算法
  18. Spring -> Spring Boot、Spring MVC 和 Spring 有什么区别
  19. Bootstrap 3 如何设置图片居中对齐
  20. Primitive Function 归一化方向角

热门文章

  1. html5游戏面试题,关于HTML5的十大面试题
  2. java插入法排序_java算法之插入排序法
  3. 原理 rpm_图文详解,微型直流电机的工作原理
  4. 天正多条线段长度lisp下载_预习丨人教版六年级数学(上册)全册知识要点梳理,可下载...
  5. 基于 OPC 规范的客户应用程序实现
  6. 中国计算机信息系统集成行业协会有含金量吗,系统集成工程师证书的含金量怎么样...
  7. 二维码的扫描和生成(zxing-android-embedded)的基础使用
  8. LESS----CSS预处理语言
  9. 在制作只有一页的WORD小报时再添加一页
  10. Linux下Nginx+Tomcat整合的安装与配置