int32_t main(void)
{
///< UART 端口初始化
App_PortInit();
///< UART 初始化
App_UartInit();
while(1)
{
if(u8RxFlg)
{
u8RxFlg = 0;
Uart_SetTb8(M0P_UART1,UartEven,u8RxData[0]);
Uart_SendDataPoll(M0P_UART1,u8RxData[0]);
Uart_SetTb8(M0P_UART1,UartEven,u8RxData[1]);
Uart_SendDataPoll(M0P_UART1,u8RxData[1]);
}
}
}
///< UART0 中断服务函数
void Uart0_IRQHandler(void)
{
if(TRUE == Uart_GetStatus(M0P_UART0, UartRC))
{
Uart_ClrStatus(M0P_UART0, UartRC);
u8RxData[1] = Uart_ReceiveData(M0P_UART0);
u8RxFlg = 1;
}
}
//串口引脚配置
static void App_PortInit(void)
{
stc_gpio_cfg_t stcGpioCfg;
DDL_ZERO_STRUCT(stcGpioCfg);
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //使能GPIO模块时钟
///<TX
stcGpioCfg.enDir = GpioDirOut;
Gpio_Init(GpioPort1, GpioPin4, &stcGpioCfg);
Gpio_SetAfMode(GpioPort1, GpioPin4, GpioAf6); //配置P14 端口为URART1_TX
///<RX
stcGpioCfg.enDir = GpioDirIn;
Gpio_Init(GpioPort1, GpioPin5, &stcGpioCfg);
Gpio_SetAfMode(GpioPort1, GpioPin5, GpioAf6); //配置P15 端口为URART1_RX
}
static void _UartBaudCfg(void)
{
uint16_t timer=0;
stc_uart_baud_cfg_t stcBaud;
stc_bt_cfg_t stcBtCfg;
DDL_ZERO_STRUCT(stcBaud);
DDL_ZERO_STRUCT(stcBtCfg);
//外设时钟使能
Sysctrl_SetPeripheralGate(SysctrlPeripheralBt,TRUE);//模式0/2可以不使能
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);
stcBaud.bDbaud = 0u;//双倍波特率功能
stcBaud.u32Baud = 9600u;//更新波特率位置
stcBaud.enMode = UartMode1; //计算波特率需要模式参数
stcBaud.u32Pclk = Sysctrl_GetPClkFreq(); //获取PCLK
timer = Uart_SetBaudRate(M0P_UART0, &stcBaud);
stcBtCfg.enMD = BtMode2;
stcBtCfg.enCT = BtTimer;
Bt_Init(TIM0, &stcBtCfg);//调用basetimer1设置函数产生波特率
Bt_ARRSet(TIM0,timer);
Bt_Cnt16Set(TIM0,timer);
Bt_Run(TIM0);
}
static void App_UartInit(void)
{
stc_uart_cfg_t stcCfg;
_UartBaudCfg();
stcCfg.enRunMode = UartMode1;//测试项,更改此处来转换4种模式测试
Uart_Init(M0P_UART0, &stcCfg);
///< UART中断配置
Uart_EnableIrq(M0P_UART0, UartRxIrq);
Uart_ClrStatus(M0P_UART0, UartRC);
EnableNvic(UART0_IRQn, IrqLevel3, TRUE);
}
已解决,中断中不能对IO口进行操作
应该是没有重新开启串口中断,中断服务函数的处理流程应该是,进入中断后-关闭串口接收中断(你没有)-设置中断标志位(也就是你的flag那个变量)- 清除中断状态(也就是你的CLEAR那个函数)-执行中断里面需要处理的程序(也就是你的那个RECV函数),执行完后应该重新开启串口接收中断(你没有)