为什么同样的程序代码,分别用cubemx的UART1使能和UART2使能,结果STM32G431Rbt6在UART1使能的时候可以正常收发串口消息,但是在UART2使能的时候不能接收也不能发送串口消息呢?(一定要用UART2是因为题目要求,之前进行通讯都用的UART1)



为什么同样的程序代码,分别用cubemx的UART1使能和UART2使能,结果STM32G431Rbt6在UART1使能的时候可以正常收发串口消息,但是在UART2使能的时候不能接收也不能发送串口消息呢?(一定要用UART2是因为题目要求,之前进行通讯都用的UART1)



关注引自免费微信小程序:皆我百晓生
针对您的问题,STM32在使用不同串口时出现收发异常的情况,可能涉及以下几个原因:
硬件配置不正确:
CubeMX配置差异:
代码实现部分:
为了更好地定位问题,请提供UART初始化及收发消息的相关代码片段,我将尝试分析并给出示例。若需展示代码,请遵循格式要求:
// 这里是假设的UART2初始化代码示例
void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
// 初始化失败处理
}
}
// 发送消息函数示例
void Send_USART2_Message(uint8_t *pData, uint16_t Size)
{
HAL_UART_Transmit(&huart2, pData, Size, HAL_MAX_DELAY);
}
// 接收消息函数示例(带中断)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
if (UartHandle == &huart2)
{
// 处理接收到的数据
}
}
再次强调,由于缺少具体的代码和硬件配置信息,上述仅为一般性指导。如果在按照以上建议排查后仍无法解决问题,请提供更多细节以便进一步分析。