//------------------------------------------------------ void USART1_IRQHandler(void) { if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET) { USART_SendData(USART1, UartBuf_RD(&UartTxbuf)); //环形数据缓存发送 if(UartBuf_Cnt(&UartTxbuf)==0) USART_ITConfig(USART1, USART_IT_TXE, DISABLE);//假如缓冲空了,就关闭串口发送中断 } else if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { USART_ClearITPendingBit(USART1, USART_IT_RXNE);//清除接收中断标志 //此种环形缓冲数组串口接收方式,适用于解包各种数据,很方便。对数据的要求是: //发送方必须要求有数据包头,以便解决串口数据无地址的问题 Udatatmp = (uint8_t) USART_ReceiveData(USART1); //临时数据赋值 UartBuf_WD(&UartRxbuf,Udatatmp); //写串口接收缓冲数组 #ifdef BT_SRC_APP CommApp(Udatatmp); #endif #ifdef BT_SRC_PC CommPC(Udatatmp); #endif } }
void testCommPC(void) { uint8_t i=0; for(i=0;i<TEST_LEN;i++) CommPC(testData[i]); }