你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 2个串口互发数据卡死,丢字节!

[复制链接]
tianyukobe 提问时间:2016-10-14 00:35 /
问题描述   :   我使用UART2和UART3 ,两边同时接收数据, UART2_RX数据-->UART3_TX发出去, UART3_RX数据-->UART2_TX发出去,串口发送均使                        用DMA,串口接收使用空闲中断接收!
注意          :  单向收发均没问题(UART2_RX-->UART3_TX,UART3_RX-->UART2_TX),如果两边用串口工具两边同时间隔10ms发数据,就会卡                                  死,丢字节;
主函数代码:
int main(void)
{
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
  MX_USART3_UART_Init();

  __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
  __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE);  

  while (1)
  {
        if(Uart2_Config.Receive_Flag)                           //空闲中断标志
        {  
                        Uart2_Config.Receive_Flag=0;          //清除空闲中断标志  

                        HAL_UART_Transmit_DMA(&huart3, Uart2_Config.RxDMABuffer, Uart2_Config.RX_Length);  
        }  

        if(Uart3_Config.Receive_Flag)                             //空闲中断标志
        {  
                        Uart3_Config.Receive_Flag=0;            //清除空闲中断标志
               
                        HAL_UART_Transmit_DMA(&huart2, Uart3_Config.RxDMABuffer, Uart3_Config.RX_Length);  
        }  

}
}

收藏 1 评论18 发布时间:2016-10-14 00:35

举报

18个回答
ynwscfsfi 回答时间:2016-10-14 00:50:11
这样做的意义何在..
原来的你 回答时间:2016-10-14 08:08:35
根本不需要这样做,设计不好冲突
奏奏奏 回答时间:2016-10-14 08:21:02
我估计楼主的用意是用于通讯中反馈对方发送的数据包,但是一般的做法是通过通讯协议来解决的呀

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zengyi703-16313 回答时间:2016-10-14 08:34:47
帮顶   
回答时间:2016-10-14 08:56:20
楼主看一下串口是否发生了溢出,如果是需要进行初始化。
tianyukobe 回答时间:2016-10-14 09:02:26
安 发表于 2016-10-14 08:56
楼主看一下串口是否发生了溢出,如果是需要进行初始化。

你是指DMA 接收BUFFER溢出吗?
tianyukobe 回答时间:2016-10-14 09:07:40
奏奏奏 发表于 2016-10-14 08:21
我估计楼主的用意是用于通讯中反馈对方发送的数据包,但是一般的做法是通过通讯协议来解决的呀 ...

一般会有什么协议,我这个就是双向要求发送的比较快, 一般10ms定时互发
回答时间:2016-10-14 09:17:58
看的是串口溢出寄存器。
tianyukobe 回答时间:2016-10-14 09:37:58
安 发表于 2016-10-14 09:17
看的是串口溢出寄存器。

是通过调试串口看  还是怎么看
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版