benlarden 发表于 2017-4-21 17:05:31

stm32cubemx 中断发送后直接触发中断接收,发什么收什么的...

请教stm32cubemx 中断发送后直接触发中断接收,发什么就收什么,是不是在发之前要调用以下函数?__HAL_UART_DISABLE_IT(&huart2, UART_IT_RXNE);

禁止掉接收,发送完后开启?我选择的是异步收发。

HAL_UART_IRQHandler()函数的收发不是互斥关系,如下:
tmp_flag = __HAL_UART_GET_FLAG(huart, UART_FLAG_RXNE);
tmp_it_source = __HAL_UART_GET_IT_SOURCE(huart, UART_IT_RXNE);
/* UART in mode Receiver ---------------------------------------------------*/
if((tmp_flag != RESET) && (tmp_it_source != RESET))
{
    UART_Receive_IT(huart);
}

tmp_flag = __HAL_UART_GET_FLAG(huart, UART_FLAG_TXE);
tmp_it_source = __HAL_UART_GET_IT_SOURCE(huart, UART_IT_TXE);
/* UART in mode Transmitter ------------------------------------------------*/
if((tmp_flag != RESET) && (tmp_it_source != RESET))
{
    UART_Transmit_IT(huart);
}

zhao.zhao 发表于 2017-4-22 11:52:47

不需要的,按你说的现象看,好像是TXD和RXD线连在了一块儿了

benlarden 发表于 2017-4-22 12:59:22

zhao.zhao 发表于 2017-4-22 11:52
不需要的,按你说的现象看,好像是TXD和RXD线连在了一块儿了

谢谢!问题找到了,是CR3寄存器里面HDSEL(半双工)设置了1导致的

zhao.zhao 发表于 2017-4-23 14:29:52

研究寄存器,佩服佩服
页: [1]
查看完整版本: stm32cubemx 中断发送后直接触发中断接收,发什么收什么的...