Exemple #1
0
//------------------------------------------------------
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]);
}