STM32
直播中

王丽

7年用户 1330经验值
私信 关注
[问答]

如何判断串口中断接收和发送的条件?

在串口中断函数中  接收是先判断再接收,发送是先发送再判断?是这样的循序?

void USART1_IRQHandler(void)

回帖(2)

高峰

2019-10-31 08:47:38
因为串口中断的类型有很多,比如发送完成中断,接收完成中断等.你要接收数据,那肯定是要判断是接收完成中断才去读DR寄存器的.
再说发送,因为你要先写数据到DR,串口才会去发送,然后才能判断是否发送完成.  不过你也可把判断放到前面,这样就变成了,在新的数据发送之前,必须等待旧的数据发送完成后再发送.总之就是每个数据的发送都需要判断有没有发送完成.
举报

李莉

2019-10-31 08:58:22
不过你也可把判断放到前面,这样就变成了,在新的数据发送之前,必须等待旧的数据发送完成后再发送.总之就是每个数据的发送都需要判断有没有发送完成.
  //等待数据发送完毕
              while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
              //将数据回送至超级终端
              USART_SendData(USART1, USART_ReceiveData(USART1));
            
是这样? 好像在中断中不能这样写吧
 
 
举报

更多回帖

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