???????????????????????????????????????
?????M0/M4 UART????16??????64??FIFO??????????UART???????/????????:???RX FIFO?ж???????????14??UART????14?????????RDA??????????????ж?????????????CPU??loading???????????????RX??????10??????????????????????????????ж????RX FIFO?????1??????????????????????????????????????????????????????????????ж?(RTO)??
???IP???????????????????????????IP???????????????UART?????????????????????????????????????UART??????????л??UART?????
void UART0_Init() { /* UART???HIRC?????? */ CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_HIRC; /* ???UART0 IP????? */ CLK->APBCLK |= CLK_APBCLK_UART0_EN; /* PB13????UART0 ?????PB14????UART0???? */ SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB13_MFP_Msk | SYS_PB_H_MFP_PB14_MFP_Msk); SYS->PB_H_MFP |= (SYS_PB_H_MFP_PB13_MFP_UART0_RX | SYS_PB_H_MFP_PB14_MFP_UART0_TX); /* Init UART0 */ UART_Open(UART0, 115200); /*???????????8bit????????У?飬1????λ*/ /*?????UART1????????9600?????????8bit??1????λ???У??*/ UART_SetLine_Config(UART1, 9600, UART_WORD_LEN_8, UART_PARITY_EVEN, UART_STOP_BIT_1); } UART_Open?????UART????????????????? ??????????????UART_WRITE(UART0, 0x31)????UART TX???????0x31??????????printf????????keil project?м???retarget.c??????????????#define DEBUG_PORT UART0????printf?????UART?????? ?????????ж?????????????????? void UART0_Init() { /* ???UART???? */ CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_HIRC; /* ???UART0 IP????? */ CLK->APBCLK |= CLK_APBCLK_UART0_EN; /* PB13????UART0 ?????PB14????UART0???? */ SYS->PB_H_MFP &= ~(SYS_PB_H_MFP_PB13_MFP_Msk | SYS_PB_H_MFP_PB14_MFP_Msk); SYS->PB_H_MFP |= (SYS_PB_H_MFP_PB13_MFP_UART0_RX | SYS_PB_H_MFP_PB14_MFP_UART0_TX); /* Init UART0 */ UART_Open(UART0, 115200); /*???????????8bit????????У?飬1????λ*/ /*?????UART1????????9600?????????8bit??1????λ???У??*/ UART_SetLine_Config(UART1, 9600, UART_WORD_LEN_8, UART_PARITY_EVEN, UART_STOP_BIT_1); /*?????????????40????λ??????*/ UART_SetTimeoutCnt(UART0, 40); /*???????FIFO?????????14B*/ UART_SET_RX_FIFO_INTTRGLV(UART0, UART_TLCTL_RFITL_14BYTES); /*??????FIFO ????ж??????????ж?*/ UART_ENABLE_INT(UART0, (UART_IER_RDA_IE_Msk | UART_IER_RTO_IE_Msk)); NVIC_EnableIRQ(UART0_IRQn); } /*UART0?ж????????*/ void UART0_IRQHandler(void) { uint8_t u8InChar=0xFF; uint32_t u32IntSts= UART0->ISR; /*???????????ж??????????ж?*/ if(u32IntSts & (UART_ISR_RDA_IS_Msk| UART_ISR_RTO_IS_Msk)) { /* ???????FIFO?????е?????????????FIFO??? */ while(UART_GET_RX_EMPTY(UART0)==0) { /* ?????FIFO?ж???????? */ u8InChar = UART_READ(UART0); } } }
UART IP?и???λ??????SYS_ResetModule(UART0_RST); ????????о????IP???е??????λ???????????????λUART0????????????????CPU reset??е?????????UART???????????RX FIFO?п??????????????????ж????Щ???????????飬?????????λ???UART IP???????
?????????????
?????????????????????
972369124