欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > stm32多串口数据互传实现(HAL版)

stm32多串口数据互传实现(HAL版)

2025/5/15 17:13:39 来源:https://blog.csdn.net/ThegreatHaige/article/details/144316010  浏览:    关键词:stm32多串口数据互传实现(HAL版)

0. 多串口数据互传

多串口互传的目的是什么?

多串口互传中遇到最大的问题是什么?

多串口互传是怎样实现的?

​ 这里写串口互传(主要是串口1和串口2)目的在于便于调试,即电脑端知道最终ESP8266-01s的响应内容并进行调试。其核心在于Usart2收到回复后触发中断,并在中断中判断收到数据的完整性,若接收到响应数据完整则让该数据通过Usart1的TX发送到电脑串口端,电脑端进行接收。要实现此需要以下:

  • 自定义串口数据接收结构体以实现多字节串口数据的保存

    typedef struct 
    {/* data *///接收数组进行多字节数据存储uint8_t RxBuffer[RX_BUFFER_SIZE];//每次每个字节接受对象uint8_t RxData;//进行存储时需要的数组下标uint16_t RxDataCnt;
    }UART_RxTypeDef;
    //默认初始化:UART_RxTypeDef  Uart2Rx = {{0}, 0, 0};
    
  • Usart2的接收中断回调函数(实现接收到一个字节数据向缓冲区存储一个字节数据)

    void USART2_Receive_Callback()
    {Uart2Rx.RxBuffer[Uart2Rx.RxDataCnt++] = Uart2Rx.RxData; //1.防止结构体出现栈溢出if (Uart2Rx.RxDataCnt > RX_BUFFER_SIZE){//初始化清空RxBuffermemset(Uart2Rx.RxBuffer, 0x00, sizeof(Uart2Rx.RxBuffer));Uart2Rx.RxDataCnt = 0;return;}//2.ESP8266 -01s收到的AT指令响应结束if (Uart2Rx.RxBuffer[Uart2Rx.RxDataCnt-2] == '\r' && Uart2Rx.RxBuffer[Uart2Rx.RxDataCnt-1] == '\n'){//双重检测AT指令结束与否if (strstr((char *)Uart2Rx.RxBuffer, "OK\r\n") != NULL ||strstr((char *)Uart2Rx.RxBuffer, "ERROR\r\n") != NULL){/* 当接受到结束数据时,串口1向计算机端传输响应内容,并等待传输完成*/HAL_UART_Transmit(&huart1, (uint8_t *)Uart2Rx.RxBuffer, Uart2Rx.RxDataCnt, 0xFFFF);while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);//相关初始化接收状态标志位置1WirelessStatus.receiveDataFlag = 1;}}//重新打开中断开关HAL_UART_Receive_IT(&huart2, (uint8_t *)&Uart2Rx.RxData, 1);
    }
    

    这里还需要注意的是单个字符char是占一个字节(8位)。

  • 相关串口的中断初始化

    HAL_NVIC_SetPriority(USART1_IRQn,1,1);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
    ....//接收使能初始化
    void Usart_Recevie_Init(void)
    {HAL_UART_Receive_IT(&huart1, (uint8_t *)&Uart1Rx.RxData, 1);HAL_UART_Receive_IT(&huart2, (uint8_t *)&Uart2Rx.RxData, 1);
    }
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词