void USART1_IRQHandler(void) //串口中断
{
if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET) //USART1接收中断,,,
{
uart1_rx_buf[uart1_rx_RecvIndex] = USART1->DR;
uart1_rx_RecvIndex++;
if(uart1_rx_RecvIndex > 3)
{
uart1_rx_RecvIndex = 4;
Uart1_RS232_SendString(uart1_rx_buf,4);
}
//uart1_rx_RecvOvertimeCnt = 0;
//uart1_rx_RecvFlag = 1;
}
if(USART_GetITStatus(USART1,USART_IT_TXE) != RESET) //USART1发送中断
{
if(uart1_tx_SendIndex < uart1_tx_SendLength)
{
USART1->DR = uart1_tx_buf[uart1_tx_SendIndex]&0x01FF;
uart1_tx_SendIndex++;
}
else
{
uart1_tx_SendIndex = 0;
USART_ITConfig(USART1, USART_IT_TXE, DISABLE); //关闭发送中断 ,,, 这种方式是判断 寄存器是否为空,,,为空就会进入中断,,,,
//所以用完之后就关中断 ,,,至于它的打开,,是在主函数中进行的....
}
}
}
原文地址:https://www.cnblogs.com/chulin/p/9055361.html