- void uart_init(UART_NO uart_no,uint32_t bound, uint32_t WordLength, uint32_t parity, uint32_t stop_bits)
- {
-
- switch(uart_no)
- {
- case UART_0:
- CLK_EnableModuleClock(UART0_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
- SYS->GPB_MFP |= SYS_GPB_MFP_PB0_UART0_RXD | SYS_GPB_MFP_PB1_UART0_TXD;
- //复位串口
- SYS_ResetModule(UART0_RST);
- UART_Open(UART0, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART0,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收模式
- UART0->FCR|=0X3<<4; //配置fifo中断等级为14字节
- UART_SetTimeoutCnt(UART0, 40);//设置接收超时时间为40,单位波特率
- /*使能接收FIFO 阀值中断,和接收超时中断*/
- UART_ENABLE_INT(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_TOUT_IEN_Msk));
- NVIC_EnableIRQ(UART02_IRQn);
- break;
- case UART_1:
- CLK_EnableModuleClock(UART1_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB4_Msk | SYS_GPB_MFP_PB5_Msk);
- SYS->GPB_MFP |= SYS_GPB_MFP_PB4_UART1_RXD | SYS_GPB_MFP_PB5_UART1_TXD;
- //复位串口
- SYS_ResetModule(UART1_RST);
- UART_Open(UART1, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART1,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收模式
- UART1->FCR|=0X3<<4; //配置fifo中断等级为14字节
- UART_SetTimeoutCnt(UART1, 40);//设置接收超时时间为40,单位波特率
- /*使能接收FIFO 阀值中断,和接收超时中断*/
- UART_ENABLE_INT(UART1, (UART_IER_RDA_IEN_Msk | UART_IER_TOUT_IEN_Msk));
- NVIC_EnableIRQ(UART1_IRQn);
- break;
- case UART_2:
- CLK_EnableModuleClock(UART2_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPD_MFP_PD14_Msk | SYS_GPD_MFP_PD15_Msk);
- SYS->GPB_MFP |= SYS_GPD_MFP_PD14_UART2_RXD | SYS_GPD_MFP_PD15_UART2_TXD;
- //复位串口
- SYS_ResetModule(UART2_RST);
- UART_Open(UART2, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART2,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收模式
- UART2->FCR|=0X3<<4; //配置fifo中断等级为14字节
- UART_SetTimeoutCnt(UART2, 40);//设置接收超时时间为40,单位波特率
- /*使能接收FIFO 阀值中断,和接收超时中断*/
- UART_ENABLE_INT(UART2, (UART_IER_RDA_IEN_Msk | UART_IER_TOUT_IEN_Msk));
- break;
- case UART_3:
- CLK_EnableModuleClock(UART3_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART3_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPA_MFP_PA3_Msk | SYS_GPA_MFP_PA2_Msk);
- SYS->GPB_MFP |= SYS_GPA_MFP_PA3_UART3_RXD | SYS_GPA_MFP_PA2_UART3_TXD;
- //复位串口
- SYS_ResetModule(UART3_RST);
- UART_Open(UART3, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART3,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收中断
- UART_ENABLE_INT(UART3, UART_IER_RDA_IEN_Msk);
- NVIC_EnableIRQ(UART3_IRQn);
- break;
- case UART_4:
- CLK_EnableModuleClock(UART4_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPC_MFP_PC7_Msk | SYS_GPC_MFP_PC6_Msk);
- SYS->GPB_MFP |= SYS_GPC_MFP_PC7_UART4_RXD | SYS_GPC_MFP_PC6_UART4_TXD;
- //复位串口
- SYS_ResetModule(UART4_RST);
- UART_Open(UART4, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART4,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收中断
- UART_ENABLE_INT(UART4, UART_IER_RDA_IEN_Msk);
- NVIC_EnableIRQ(UART4_IRQn);
- break;
- case UART_5:
- CLK_EnableModuleClock(UART5_MODULE);//使能串口时钟
- CLK_SetModuleClock(UART5_MODULE, CLK_CLKSEL1_UART_S_HXT, CLK_CLKDIV_UART(1));//选择串口时钟源
- //设置串口接收、发送引脚
- SYS->GPB_MFP &= ~(SYS_GPA_MFP_PA1_Msk | SYS_GPA_MFP_PA0_Msk);
- SYS->GPB_MFP |= SYS_GPA_MFP_PA1_UART5_RXD | SYS_GPA_MFP_PA0_UART5_TXD;
- //复位串口
- SYS_ResetModule(UART5_RST);
- UART_Open(UART5, bound);//默认8个数据长度,无奇偶校验,1个停止位
- UART_SetLine_Config(UART5,bound,WordLength,parity,stop_bits);//配置串口
- //配置串口接收中断
- UART_ENABLE_INT(UART5, UART_IER_RDA_IEN_Msk);
- NVIC_EnableIRQ(UART5_IRQn);
- break;
- case UART_6:
- break;
- case UART_7:
- break;
- default:
- break;
- }
-
-
- }