ISR_t UART0_Status_IRQHandler(void) { uint8_t uartFlag = UART_S1_REG(UART0_BASE_PTR); UART_S1_REG(UART0_BASE_PTR) = 0x00; if(uartFlag & UART_S1_TC_MASK) { UART_TransferComplete(); } if(uartFlag & UART_S1_RDRF_MASK) { UART_ReceptionComplete(); } }
/********************************************************************************************************* ** Function name: uart2SendChar ** Descriptions: UART·¢ËÍÒ»¸ö×Ö½Ú ** input parameters: ucData:´ý·¢ËÍ×Ö½Ú ** output parameters: none ** Returned value: none ** Created by: ** Created date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: *********************************************************************************************************/ void uart2SendChar (INT8U ucData) { UART_MemMapPtr uartPtr = UART2_BASE_PTR; while (!((UART_S1_REG(uartPtr) & UART_S1_TDRE_MASK))); /* µÈ´ýFIFO¿ÉÓà */ UART_D_REG(uartPtr) = ucData; /* Ìî³äÊý¾Ý¼Ä´æÆ÷ */ }
/********************************************************************************************************* ** Function name: uart2GetChar ** Descriptions: UART»ñÈ¡Ò»¸ö×Ö½Ú ** input parameters: none ** output parameters: none ** Returned value: »ñÈ¡×Ö½ÚÖµ ** Created by: ** Created date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: *********************************************************************************************************/ INT8U uart2GetChar (void) { UART_MemMapPtr uartPtr = UART1_BASE_PTR; while (!(UART_S1_REG(uartPtr) & UART_S1_RDRF_MASK)); /* µÈ´ý½ÓÊÕ»º³åÇø¿ÉÓà */ return UART_D_REG(uartPtr); /* ·µ»Ø½ÓÊÕ×Ö½Ú */ }
/********************************************************************************************************* ** Function name: UART2_IRQHandler ** Descriptions: UART2ÖжϷþÎñº¯Êý ** input parameters: none ** output parameters: none ** Returned value: none ** Created by: ** Created date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: *********************************************************************************************************/ void UART2_IRQHandler (void) { UART_MemMapPtr uartPtr = UART2_BASE_PTR; /* ·¢ËÍÖжϴ¦Àí³ÌÐò */ #if UART2_SEND_IRQ /* Óû§¶¨Òå */ #endif #if UART2_RECEIVE_IRQ while (UART_S1_REG(uartPtr) & UART_S1_RDRF_MASK){ /* Çå³ýÖжϱêÖ¾ */ uart2SendChar(UART_D_REG(uartPtr)); /* ·µ»Ø½ÓÊÕÊý¾Ý */ while (!UART_D_REG(uartPtr)); /* Çå½ÓÊÕ»º³åÇø */ } #endif }
/********************************************************************************************************* ** Function name: uart2Init ** Descriptions: UART2µÄ³õʼ»¯ ** input parameters: ucBaudRate:²¨ÌØÂÊ£»ucParityEnable:УÑéλѡÔñ£» ** ucParityType:УÑéÀàÐÍ£»ucDataLength:Êý¾Ý³¤¶È£»ucStopBit:ֹͣλ£» ** output parameters: none ** Returned value: none ** Created by: ** Created date: **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: *********************************************************************************************************/ void uart2Init (INT32U ulBaudRate, INT8U ucParityEnable, INT8U ucParityType, INT8U ucDataLength, INT8U ucStopBit) { UART_MemMapPtr uartPtr = UART2_BASE_PTR; register INT16U usBaudRate = 0; #if UART_PARAM_DEBUG UART_CHECK_PARAM(UART_PARAM_LENGTH(ucDataLength)); UART_CHECK_PARAM(UART_PARAM_STOP(ucStopBit)); UART_CHECK_PARAM(UART_PARAM_LOGIC(ucParityEnable)); UART_CHECK_PARAM(UART_PARAM_PARITY(ucParityType)); #endif SIM_SCGC4 |= SIM_SCGC4_UART2_MASK; /* ÔÊÐíÍâÉèʱÖÓ */ uart2TranControl(UART_TX_DISABLE, UART_RX_DISABLE); /* Ê×ÏȽûֹͨÐÅ */ #if 0 PORTD_PCR3 = PORT_PCR_MUX(0x3); /* UART2_TXD */ PORTD_PCR2 = PORT_PCR_MUX(0x3); /* UART2_RXD */ #endif #if 0 PORTD_PCR5 = PORT_PCR_MUX(0x3); /* UART2_TXD */ PORTD_PCR4 = PORT_PCR_MUX(0x3); /* UART2_RXD */ #endif #if 0 PORTE_PCR22 = PORT_PCR_MUX(0x4); /* UART2_TXD */ PORTE_PCR23 = PORT_PCR_MUX(0x4); /* UART2_RXD */ #endif UART_C1_REG(uartPtr) &= ~(UART_C1_M_MASK | /* Êý¾Ý³¤¶È */ UART_C1_PT_MASK | /* УÑéλÀàÐÍ */ UART_C1_PE_MASK); /* УÑéλ */ UART_C1_REG(uartPtr) |= ((ucDataLength - 8UL) << UART_C1_M_SHIFT)| (ucParityEnable << UART_C1_PE_SHIFT)| (ucParityType << UART_C1_PT_SHIFT); usBaudRate = SystemBusClock/(ulBaudRate * 16); UART_BDH_REG(uartPtr) = (usBaudRate & 0x1F00) >> 8; /* ²¨ÌØÂÊ */ UART_BDL_REG(uartPtr) = (INT8U)(usBaudRate & UART_BDL_SBR_MASK); UART_BDH_REG(uartPtr) &= ~UART_BDH_SBNS_MASK; /* ֹͣλ */ UART_BDH_REG(uartPtr) |= (ucStopBit - 1) << UART_BDH_SBNS_SHIFT; UART_C2_REG(uartPtr) &= ~(UART_C2_TIE_MASK | UART_C2_TCIE_MASK| /* Çå³ýÖжÏÉèÖà */ UART_C2_RIE_MASK | UART_C2_ILIE_MASK); while ((UART_S1_REG(uartPtr) & UART_S1_RDRF_MASK) && (UART_D_REG(uartPtr))); /* Çå½ÓÊÕ»º³åÇø */ #if UART2_IRQ_ENABLE #if UART2_SEND_IRQ UART_C2_REG(uartPtr) |= UART_C2_TCIE_MASK; #endif #if UART2_RECEIVE_IRQ UART_C2_REG(uartPtr) |= UART_C2_RIE_MASK; #endif NVIC_EnableIRQ(UART2_IRQn); NVIC_SetPriority(UART2_IRQn,3); /* Óû§×Ô¼º¶¨Òå */ #endif }