- #include "ddl.h"
- #include "uart.h"
- #include "gpio.h"
- #include "sysctrl.h"
-
- #define T1_PORT (3)
- #define T1_PIN (3)
-
- volatile static uint8_t u8RxData;
- volatile static uint8_t u8TxCnt=0;
- volatile static uint8_t u8RxCnt=0;
-
- void App_UartCfg(void);
- void App_PortInit(void);
-
- int32_t main(void)
- {
- //串口引脚配置
- App_PortInit();
-
- //串口配置
- App_UartCfg();
-
- while(1)
- {
- if(u8RxCnt>=1)
- {
- u8RxCnt = 0;
- Uart_SendDataIt(M0P_UART1, ~u8RxData); //启动UART1发送第一个字节
- }
-
- }
- }
-
- //UART1中断函数
- void Uart1_IRQHandler(void)
- {
- if(Uart_GetStatus(M0P_UART1, UartRC)) //UART1数据接收
- {
- Uart_ClrStatus(M0P_UART1, UartRC); //清中断状态位
- u8RxData = Uart_ReceiveData(M0P_UART1); //接收数据字节
- u8RxCnt++;
- }
-
- if(Uart_GetStatus(M0P_UART1, UartTC)) //UART1数据发送
- {
- Uart_ClrStatus(M0P_UART1, UartTC); //清中断状态位
- u8TxCnt++;
- }
-
- }
-
- //串口引脚配置
- void App_PortInit(void)
- {
- stc_gpio_cfg_t stcGpioCfg;
-
- DDL_ZERO_STRUCT(stcGpioCfg);
-
- Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟
-
- ///<TX
- stcGpioCfg.enDir = GpioDirOut;
- Gpio_Init(GpioPortD, GpioPin7, &stcGpioCfg);
- Gpio_SetAfMode(GpioPortD, GpioPin7, GpioAf1); //配置PA02 端口为URART1_TX
-
- ///<RX
- stcGpioCfg.enDir = GpioDirIn;
- Gpio_Init(GpioPortD, GpioPin6, &stcGpioCfg);
- Gpio_SetAfMode(GpioPortD, GpioPin6, GpioAf1); //配置PA03 端口为URART1_RX
- }
-
- //串口配置
- void App_UartCfg(void)
- {
- stc_uart_cfg_t stcCfg;
-
- DDL_ZERO_STRUCT(stcCfg);
-
- ///< 开启外设时钟
- Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);///<使能uart1模块时钟
-
- ///<UART Init
- stcCfg.enRunMode = UartMskMode3; ///<模式3
- stcCfg.enStopBit = UartMsk1bit; ///<1bit停止位
- stcCfg.enMmdorCk = UartMskEven; ///<偶检验
- stcCfg.stcBaud.u32Baud = 9600; ///<波特率9600
- stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div; ///<通道采样分频配置
- stcCfg.stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); ///<获得外设时钟(PCLK)频率值
- Uart_Init(M0P_UART1, &stcCfg); ///<串口初始化
-
- ///<UART中断使能
- Uart_ClrStatus(M0P_UART1,UartRC); ///<清接收请求
- Uart_ClrStatus(M0P_UART1,UartTC); ///<清接收请求
- Uart_EnableIrq(M0P_UART1,UartRxIrq); ///<使能串口接收中断
- Uart_EnableIrq(M0P_UART1,UartTxIrq); ///<使能串口接收中断
- EnableNvic(UART1_3_IRQn, IrqLevel3, TRUE); ///<系统中断使能
-
- }
https://blog.csdn.net/heqiunong/article/details/125974396
|