问答

汇集网友智慧,解决技术难题

21ic问答首页 - HC32F003C4Pa

HC32F003 ST pi gp IO

HC32F003C4Pa

longzhengbing12021-01-14
用官网例程UART1 改UART0 只能发生不能接受。不知到什么情况。long:

//串口引脚配置
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);          //配置P35 端口为URART1_TX

    ///<RX
    stcGpioCfg.enDir = GpioDirIn;
    Gpio_Init(GpioPort1, GpioPin5, &stcGpioCfg);
    Gpio_SetAfMode(GpioPort1, GpioPin5, GpioAf5);          //配置P36 端口为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(SysctrlPeripheralUart0,TRUE);

    stcBaud.bDbaud  = 0u;//双倍波特率功能
    stcBaud.u32Baud = 9600u;//更新波特率位置
    stcBaud.enMode  = UartMode3; //计算波特率需要模式参数
    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 = UartMode3;//测试项,更改此处来转换4种模式测试
    Uart_Init(M0P_UART0, &stcCfg);

    ///< UART中断配置
    Uart_EnableIrq(M0P_UART0, UartRxIrq);
    Uart_ClrStatus(M0P_UART0, UartRC);
    EnableNvic(UART0_IRQn, IrqLevel3, TRUE);

}
/******************************************************************************
* EOF (not truncated)
*********************
///< UART0 中断服务函数
void Uart0_IRQHandler(void)
{

                //delay1ms(500);
    if(TRUE == Uart_GetStatus(M0P_UART0, UartRC))
    {
        Uart_ClrStatus(M0P_UART0, UartRC);

        u8RxData[1] = Uart_ReceiveData(M0P_UART0);
        u8Rx** = 1;
    }

}


回答 +关注 18
996人浏览 1人回答问题 分享 举报
1 个回答

您需要登录后才可以回复 登录 | 注册