代碼:
void uart1_init()
{
? ? GPIOA_SetBits(bRXD1);
? ? GPIOA_ModeCfg(bRXD1, GPIO_ModeIN_PU);
? ? GPIOA_SetBits(bTXD1);
? ? GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
? ? UART1_DefInit();
? ? UART1_INTCfg( ENABLE, RB_IER_RECV_RDY|RB_IER_LINE_STAT );
? ? PFIC_EnableIRQ( UART1_IRQn );
}
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void UART1_IRQHandler( void )
{
? switch ( UART1_GetITFlag() )
? {
? ? case UART_II_LINE_STAT :? ? ? ? // 線路狀態(tài)錯(cuò)誤
? ? {
? ? ? UART1_GetLinSTA();
? ? ? break;
? ? }
? ? case UART_II_RECV_RDY :? ? ? ? ? // 數(shù)據(jù)達(dá)到設(shè)置觸發(fā)點(diǎn)
? ? ? break;
? ? case UART_II_RECV_TOUT :? ? ? ? ?// 接收超時(shí),暫時(shí)一幀數(shù)據(jù)接收完成
? ? ? len1 = UART1_RecvString( Rx1Buff );
? ? ? UART1_SendString(Rx1Buff,len1);
? ? ? SendToBle(Rx1Buff,len1);
? ? ? break;
? ? case UART_II_THR_EMPTY :? ? ? ? ?// 發(fā)送緩存區(qū)空,可繼續(xù)發(fā)送
? ? ? break;
? ? case UART_II_MODEM_CHG :? ? ? ? ?// 只支持串口0
? ? ? break;
? ? default :
? ? ? break;
? }
}