- #include "BSP_GPIO.h"
- #include "BSP_Uart.h"
-
- //#include "UFD.h"
- uint8_t u8Rx0Data;
-
- //< 串口发送重定向
- int fputc(int ch, FILE * file)
- {
- Uart_SendDataPoll(M0P_UART0,ch); //调用库函数,通过UART0发送一个字母。
-
- return ch;
- }
- static void Uart0_PortInit(void)
- {
- stc_gpio_cfg_t stcGpioCfg;
-
- ///< 打开GPIO外设时钟门控
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
-
- DDL_ZERO_STRUCT(stcGpioCfg);
-
- ///< 端口方向配置 UART0_TXD
- stcGpioCfg.enDir = GpioDirOut;
- Gpio_Init(PORT_DEBUG_TXD,PIN_DEBUG_TXD,&stcGpioCfg);
- Gpio_SetAfMode(PORT_DEBUG_TXD,PIN_DEBUG_TXD,GpioAf2);//UART0_TXD
-
- ///< 端口方向配置 UART0_RXD
- stcGpioCfg.enDir = GpioDirIn;
- ///< 端口上下拉配置->上拉
- stcGpioCfg.enPu = GpioPuEnable;
- Gpio_Init(PORT_DEBUG_RXD,PIN_DEBUG_RXD,&stcGpioCfg);
- Gpio_SetAfMode(PORT_DEBUG_RXD,PIN_DEBUG_RXD,GpioAf2);//UART0_RXD
-
- Sysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE); /*Set SWD port to GPIO mode*/
- }
- static void Uart0_Init(void)
- {
- stc_uart_cfg_t stcCfg;
- stc_uart_baud_t stcBaud;
-
- DDL_ZERO_STRUCT(stcCfg);
- DDL_ZERO_STRUCT(stcBaud);
-
- ///< 打开UART0外设时钟门控
- Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,TRUE);
-
- ///<UART Init
- stcCfg.enRunMode = UartMskMode1; ///<模式1
- stcCfg.enStopBit = UartMsk1bit; ///<1bit停止位
- stcCfg.enMmdorCk = UartMskDataOrAddr; ///<多机模式时
- stcCfg.stcBaud.u32Baud = 1000000; ///<波特率1000000
- stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div; ///<通道采样分频配置
- stcCfg.stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); ///</<获得外设时钟(PCLK)频率值
- Uart_Init(M0P_UART0, &stcCfg); ///<串口初始化
-
- ///<UART中断使能
- Uart_ClrStatus(M0P_UART0,UartRC); ///<清接收请求
- Uart_ClrStatus(M0P_UART0,UartTC); ///<清接收请求
-
- Uart_EnableIrq(M0P_UART0,UartRxIrq); ///<使能串口接收中断
- EnableNvic(UART0_2_IRQn, IrqLevel3, TRUE); ///<系统中断使能
- }
-
- void BSP_UartInit(void)
- {
- Uart0_PortInit();
- Uart0_Init();
- }
|