STM32 用RS485进行半双工通信出现的问题

发布者:InspiredDreamer最新更新时间:2019-07-27 来源: eefocus关键字:STM32  RS485  半双工通信 手机看文章 扫描二维码
随时随地手机看文章

最近接了一个项目,需要用到RS485总线同时和多台机器通信,方式是半双工,但是当向总线一次发送大量数据的时候,STM32就会像出现死机一样,经过调试发现串口在既不是接收数据中断,也不是发送数据中断的情况下不断进入串口中断,当时瞬间怀疑的是:串口产生了什么错误导致一直进入中断。


经过调试和查找资料得出如下解决办法:


在串口中断中添加如下语句:


if(USART_GetFlagStatus(USART1,USART_FLAG_ORE!=RESET))


{


USART_ClearFlag(USART1,USART_FLAG_ORE);


USART_ReceiveData(USART1);


}



关键字:STM32  RS485  半双工通信 引用地址:STM32 用RS485进行半双工通信出现的问题

上一篇:RS485通信基础理论与STM32测试
下一篇:stm32下面控制RS485发送有一定概率出错的情况

推荐阅读最新更新时间:2024-11-19 01:43

STM32中ADC的使用/printf函数重定向串口显示内部温度传感器测量值
STM32F334C8T6这款MCU中有两个12位ADC(模数转换器),ADC1的通道16连接到内置的一个温度传感器,本文使用该温度传感器测量MCU和周围的环境温度,并且通过串口发送到PC的串口助手进行显示。 1. ADC的使用 1. select the ADC clock using the function RCC_ADCCLKConfig() 2. Enable the ADC interface clock using RCC_AHBPeriphClockCmd(); 3. ADC pins configuration  Enable the clock for the ADC GPIOs using the fo
[单片机]
<font color='red'>STM32</font>中ADC的使用/printf函数重定向串口显示内部温度传感器测量值
STM32的单脉冲模式实现精确个数脉冲
我们在做嵌入式产品的开发过程中,有时需要输出指定数目的脉冲。实现它的方法较多,这里介绍一种利用 STM32定时器的单脉冲模式来实现的方法。 STM32定时器的单脉冲输出功能,其实是定时器输出比较功能的一个特殊应用。即让定时器在某个事件触发后的一段时间产生指定脉宽的单脉冲信号。 计数器的启动通常可由从模式控制器控制,可由比较输出模式或PWM输出模式来产生波形。通过置位OPM@TIMx_CR1来在下一个更新事件时关闭计数器来实现单脉冲输出。 STM32定时器里有个重复计数器TIMx_RCR,当它的值是个非0值N时,计数器不再每次溢出【上溢或下溢】时都产生更新事件,而是当发生第N+1次溢出时才产生更新事件。如果RCR=0
[单片机]
<font color='red'>STM32</font>的单脉冲模式实现精确个数脉冲
调通STM32的串口ISP的经验
1、Boot0需接高(注意不要超过3.6V,非5V容忍脚),Boot1(PB2)需接低(电阻下拉或直接接地)。 2、VDDA/VSSA一定要接好,电压符合要求(2.4~3.6V).即使不用ADC也要接,因为VDDA还为POR/OSC/PLL等“模拟”部分供电。 3、检查复位脚的电位是否正常,JTAG仿真器有可能复位系统。 4、检查TXD/RXD信号通路。当然要畅通,呵呵。 5、如果用非mcuisp的软件,最好在TXD/RXD上加上拉电阻到MAX232电源,防止产生干扰信号。mcuisp从软件上处理了这个干扰,可不考虑这点。 6、波特率先设为9600bps或更低,调通读器件ID后再提高到115200。波特率是否能跑高,与PC串口(U
[单片机]
STM32STM32串口配置的步骤(库函数)
第一部分: 第二部分:串口中断4种接收数据实现方式
[单片机]
【<font color='red'>STM32</font>】<font color='red'>STM32</font>串口配置的步骤(库函数)
采用STM32的心电采集系统电路设计
  心血管类疾病已经成为威胁人类身体健康的重要疾病之一,而清晰有效的心电图为诊断这类疾病提供了依据,心电采集电路是心电采集仪的 关键部分,心电信号属于微弱信号,其频率范围在0.03~100 Hz之间,幅度在0~5 mV之间,同时心电信号还掺杂有大量的干扰信号,因此,设计良好的滤波电路和选择合适的控制器是得到有效心电信号的关键。基于此,本文设计了以STM32 为控制核心,AD620和OP07为模拟前端的心电采集仪,本设计简单实用,噪声干扰得到了有效抑制。    主控模块电路设计   主控模块的STM32F103VET单片机是控制器的核心,该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,其内核采用 AR
[电源管理]
采用<font color='red'>STM32</font>的心电采集系统电路设计
STM32使用BSRR和BRR寄存器快速操作GPIO端口
STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'。 GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。
[单片机]
STM32入门——寄存器
GPIO学习: 引脚的分类:1.电源引脚 2.晶振引脚 3.复位引脚 4.下载引脚 5.BOOT引脚 6.GPIO引脚 GPIO的结构:1.保护二极管 --引脚两端连接上两个二极管,设置好高低电压,这样超过这个电压之后二极管导通就会保护里面的电路。这能处于两端电压设置的中间值。2.上下拉电阻--上下拉电阻在输入方向门口,用于稳定电压 3.P-MOS和N-MOS管 --- 这是输出模式的门口,推挽输出和开漏输出,推挽输出3.3V ,靠命令传来的电压,激活开关,使他们链接对应的高低电压传出去。 开漏输出能输出5V电压,开漏输出就是控制开关开或者关,上边要接上一个上拉电阻,关掉就是低电压,开开就是高电压。 4.输出寄存器---输出寄存器
[单片机]
STM32单片机设置PWM输出完整教程
STM32单片机 PWM 环境: 主机:XP 开发环境:MDK4.23 MCU:STM32F103CBT6 说明: 使用内部8M晶振,倍频到64M供给TIM3定时器,PA6(通道1)上产生640K,50%方波 源代码: 初始化时钟: //初始化RCC时钟 voidinit_rcc(void) { //将外设RCC寄存器重设为缺省值 RCC_DeInit(); //内部晶振使能 RCC_HSICmd(ENABLE); //等待工作稳定 while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET); //LSI的启动,提供给看门狗时钟 RCC_LSICmd(ENABLE);//打开LSI w
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved