5522|4

18

帖子

0

TA的资源

一粒金砂(中级)

stm32单片机实现串口1(115200)同时接收/发送数据给串口2(9600) [复制链接]

stm32g030芯片

实现功能串口1 给串口2 发送数据,同时接收串口2数据

               串口2给串口1 发送数据,同时接收串口1数据

 

可以实现9600(串口2)给串口1(115200)发送数据,串口1能完整接收。

串口1(115200)给串口2(9600)发送数据,数据接收不正确。是什么地方配置不正确还是

main.c

 while (1)
  {
    /* USER CODE END WHILE */

        if(HAL_UART_Receive_IT(&huart2,USART2_RX_BUF,1) == HAL_OK)
        {
        
            HAL_UART_Transmit(&huart1,USART2_RX_BUF,sizeof(USART2_RX_BUF),100);
        }
        
        if(HAL_UART_Receive_IT(&huart1,USART1_RX_BUF,1) == HAL_OK)
        {
        
            HAL_UART_Transmit(&huart2,USART1_RX_BUF,sizeof(USART1_RX_BUF),100);
        }

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

回调函数

void HAL_UART_RXCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart ->Instance == USART2)
    {
            HAL_UART_Transmit(&huart1,USART2_RX_BUF,1,100);
        HAL_UART_Receive_IT(&huart2,USART2_RX_BUF,1);
        
    }
    
    if(huart ->Instance == USART1)
    {
            HAL_UART_Transmit(&huart2,USART1_RX_BUF,1,100);
        HAL_UART_Receive_IT(&huart1,USART1_RX_BUF,1);
    }
}

usart.c

usart初始化中添加使能

/*Enable the uart data register not empty interrupt*/
    __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
    //__HAL_UART_ENABLE_IT(&huart2,UART_IT_TXE);
  /*Enable the uart parity error interrupt*/
    __HAL_UART_ENABLE_IT(&huart2,UART_IT_PE);
    /*Enable the uart error interrtupt:(Frame error,noise error,overrun error)*/
    __HAL_UART_ENABLE_IT(&huart2,UART_IT_ERR);
 

此帖出自stm32/stm8论坛

最新回复

这个搞法好奇怪啊!为什么波特率不一样呢!   详情 回复 发表于 2022-7-18 18:08

回复
举报

6883

帖子

2

TA的资源

版主

这是应用在什么场景下?透传吗?

此帖出自stm32/stm8论坛

点评

是的  详情 回复 发表于 2022-7-2 09:23

回复

18

帖子

0

TA的资源

一粒金砂(中级)

wangerxian 发表于 2022-7-1 16:53 这是应用在什么场景下?透传吗?

是的

此帖出自stm32/stm8论坛

回复

9731

帖子

24

TA的资源

版主

没看懂你的问题 你是要实现一单片机的两个串口相互收发吗?而且是在不同分辨率之间通信?

此帖出自stm32/stm8论坛

回复

104

帖子

0

TA的资源

一粒金砂(中级)

这个搞法好奇怪啊!为什么波特率不一样呢!

此帖出自stm32/stm8论坛

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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