void
USART1_IRQHandler()
{
if
(USART_GetITStatus(USART1USART_IT_RXNE) != RESET)
//读中断产生
USART_ClearITPendingBit(USART1USART_IT_RXNE);
//清除中断标志
RxBuffer1[Rx_Num] = USART_ReceiveData(USART1);
Rx_Num++;
(Rx_Num == MAX_BUF)
//接收数据数量完成
USART_ITConfig(USART1 USART_IT_RXE DISABLE);
//关闭接收中断
}
(USART_GetITStatus(USART1 USART_IT_TXE) != RESET)
//发送中断产生
USART_SendData(USART1 TxBuffer1[Tx_Num--]);
(Tx_Num == 0)
//发送数据数量完成
USART_ITConfig(USART1 USART_IT_TXE DISABLE);
//关闭发送中断
比如一帧数据有5个字节,Rx_Num为4时,全部接受完成,就关闭接受中断,去判断这5个字节?
接收中断不用关吧,一直开着也可以的,这样不会丢数据的。
发送中断在发完后,是要关掉的