在线时间2 小时
UID40960
注册时间2014-11-10
NXP金币0
该用户从未签到
新手上路

- 积分
- 21
- 最后登录
- 2017-12-30
|

楼主 |
发表于 2017-12-29 12:02:43
|
显示全部楼层
- void uart0Init( INT32U ulBaudRate,
- INT8U ucParityEnable,
- INT8U ucParityType,
- INT8U ucDataLength,
- INT8U ucStopBit)
- {
- UART0_MemMapPtr uartPtr = UART0_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_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK;
- SIM_SOPT2 |= SIM_SOPT2_UART0SRC(1); /* Ñ¡ÔñPLLʱÖÓ */
- SIM_SCGC4 |= SIM_SCGC4_UART0_MASK; /* ÔÊÐíÍâÉèʱÖÓ */
- uart0TranControl(UART_TX_DISABLE, UART_RX_DISABLE); /* Ê×ÏȽûֹͨÐÅ */
- #if 1
- PORTA_PCR1 = PORT_PCR_MUX(0x2); /* UART0_TXD */
- PORTA_PCR2 = PORT_PCR_MUX(0x2); /* UART0_RXD */
- #endif
- #if 0
- PORTA_PCR14 = PORT_PCR_MUX(0x3); /* UART0_TXD */
- PORTA_PCR15 = PORT_PCR_MUX(0x3); /* UART0_RXD */
- #endif
- #if 0
- PORTD_PCR7 = PORT_PCR_MUX(0x3); /* UART0_TXD */
- PORTD_PCR6 = PORT_PCR_MUX(0x3); /* UART0_RXD */
- #endif
- #if 0
- PORTE_PCR20 = PORT_PCR_MUX(0x4); /* UART0_TXD */
- PORTE_PCR21 = PORT_PCR_MUX(0x4); /* UART0_RXD */
- #endif
- #if 0
- PORTE_PCR17 = PORT_PCR_MUX(0x3); /* UART0_TXD */
- PORTE_PCR16 = PORT_PCR_MUX(0x3); /* UART0_RXD */
- #endif
-
- UART0_C1_REG(uartPtr) &= ~(UART0_C1_M_MASK | /* Êý¾Ý³¤¶È */
- UART0_C1_PT_MASK | /* УÑéλÀàÐÍ */
- UART0_C1_PE_MASK); /* УÑéλ */
- UART0_C4_REG(uartPtr) &= ~UART0_C4_M10_MASK;
-
- if (ucDataLength == 10) {
- UART0_C1_REG(uartPtr) |= (ucParityEnable << UART0_C1_PE_SHIFT)|
- (ucParityType << UART0_C1_PT_SHIFT);
- UART0_C4_REG(uartPtr) |= UART0_C4_M10_MASK;
- } else {
- UART0_C1_REG(uartPtr) |= ((ucDataLength - 8UL) << UART0_C1_M_SHIFT)|
- (ucParityEnable << UART0_C1_PE_SHIFT)|
- (ucParityType << UART0_C1_PT_SHIFT);
- }
-
- usBaudRate = SystemBusClock/(ulBaudRate * 16);
- UART0_BDH_REG(uartPtr) = (usBaudRate & 0x1F00) >> 8; /* ²¨ÌØÂÊ */
- UART0_BDL_REG(uartPtr) = (INT8U)(usBaudRate & UART0_BDL_SBR_MASK);
- UART0_BDH_REG(uartPtr) &= ~UART0_BDH_SBNS_MASK; /* ֹͣλ */
- UART0_BDH_REG(uartPtr) |= (ucStopBit - 1) << UART0_BDH_SBNS_SHIFT;
- UART0_C2_REG(uartPtr) &= ~(UART0_C2_TIE_MASK | UART0_C2_TCIE_MASK | /* Çå³ýÖжÏÉèÖà */
- UART0_C2_RIE_MASK | UART0_C2_ILIE_MASK);
- while((UART0_S1_REG(uartPtr) & UART0_S1_RDRF_MASK) &&
- (UART0_D_REG(uartPtr))); /* Çå½ÓÊÕ»º³åÇø */
- #if UART0_DEFAULT_OPEN
- uart0TranControl(UART_TX_ENABLE, UART_RX_ENABLE); /* ÅäÖÃÍê³ÉÔÊÐíͨÐÅ */
- #endif
-
- #if UART0_IRQ_ENABLE
- #if UART0_SEND_IRQ
- UART0_C2_REG(uartPtr) |= UART0_C2_TCIE_MASK;
- #endif
- #if UART0_RECEIVE_IRQ
- UART0_C2_REG(uartPtr) |= UART0_C2_RIE_MASK;
- #endif
- NVIC_EnableIRQ(UART0_IRQn);
- NVIC_SetPriority(UART0_IRQn,3); /* Óû§×Ô¼º¶¨Òå */
- #endif
-
- }
复制代码 |
|