STM32
直播中

YYXIAO

8年用户 1144经验值
擅长:接口/总线/驱动
私信 关注
[问答]

串口3使用USART_SendData(USART1,mydata2)发送给串口1一个命令,发送数据会引起接收中断吗?

我串口3使用USART_SendData(USART1,mydata2)发送给串口1一个命令,传递给串口1连接的LORA模组,得到响应数据后再进入串口1的接收中断,返回给串口3响应数据。但现在的情况是,串口1接收到命令直接进入接收中断,直接把命令返回给串口3了。

回帖(2)

何禄蔓

2024-4-7 14:54:13
您好,请确认接收到的数据和发送的数据是否一致。如果没有发送中断,但是接收中断能收到数据,分析两种原因,一是对方直接回复,比如lora开启了回显功能,二是发送和接收线在外部短接导致。
举报

郭中

2024-4-7 15:07:23
根据描述,发送数据时会触发串口1的发送中断,并且立即进入串口1的接收中断来处理返回数据。这可能是因为串口1的发送和接收中断优先级设置不当,导致发送中断优先级高于接收中断,导致立即进入接收中断。

为解决这个问题,可以尝试修改串口1的中断优先级设置,确保接收中断的优先级高于发送中断。可以使用`NVIC_Init()`函数来配置中断优先级。先将发送中断禁用,发送数据完成后再启用。例子代码如下:

```c
// 先禁用串口1的发送中断
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

// 发送数据
USART_SendData(USART1, mydata2);

// 等待发送完成
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

// 启用串口1的发送中断
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
```

另外,确保串口1的接收中断处理函数中,正确地向串口3发送响应数据。如果仍然无法解决问题,可能需要检查其他代码逻辑或硬件连接是否有问题,以进一步排查原因。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分