问答

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

21ic问答首页 - 请问HC32LF136的开发板LPuart0如何复用?

复用 开发板 UART0 lpuart HC 小华半导体

请问HC32LF136的开发板LPuart0如何复用?

我在官方提供的样例库中将LPuart1修改成了PB10和PB11的脚复用成LPuart0,但是发现一直未复用成功,请问一下哪里配置错了吗?///<LPUART1 中断服务函数
以下为配置代码
void LpUart1_IRQHandler(void)
{
    if(LPUart_GetStatus(M0P_LPUART0, LPUartTC))
    {
        LPUart_ClrStatus(M0P_LPUART0, LPUartTC);   ///<清发送中断请求

        LPUart_DisableIrq(M0P_LPUART0,LPUartTxIrq);///<禁止发送中断
        LPUart_EnableIrq(M0P_LPUART0,LPUartRxIrq); ///<使能接收中断
    }

    if(LPUart_GetStatus(M0P_LPUART0, LPUartRC))    ///接收数据
    {
        LPUart_ClrStatus(M0P_LPUART0, LPUartRC);   ///<清接收中断请求
        u8RxData = LPUart_ReceiveData(M0P_LPUART0);///读取数据

        LPUart_DisableIrq(M0P_LPUART0,LPUartRxIrq);///<禁止接收中断
        LPUart_EnableIrq(M0P_LPUART0,LPUartTxIrq); ///<使能发送中断

        LPUart_SendDataIt(M0P_LPUART0, ~u8RxData); ///把接收数据取反,并发送      
    }
}

///< LPUART配置
void App_LpUartCfg(void)
{
    stc_lpuart_cfg_t  stcCfg;

    DDL_ZERO_STRUCT(stcCfg);

    ///<外设模块时钟使能
    Sysctrl_SetPeripheralGate(SysctrlPeripheralLpUart0,TRUE);   

    ///<LPUART 初始化
    stcCfg.enStopBit = LPUart1bit;                   ///<1停止位   
    stcCfg.enMmdorCk = LPUartEven;                   ///<偶校验
    stcCfg.stcBaud.enSclkSel = LPUartMskPclk;        ///<传输时钟源
    stcCfg.stcBaud.u32Sclk = Sysctrl_GetPClkFreq();  ///<PCLK获取
    stcCfg.stcBaud.enSclkDiv = LPUartMsk4Or8Div;     ///<采样分频
    stcCfg.stcBaud.u32Baud = 9600;                   ///<波特率
    stcCfg.enRunMode = LPUartMskMode3;               ///<工作模式
    LPUart_Init(M0P_LPUART0, &stcCfg);

    ///<LPUART 中断使能
    LPUart_ClrStatus(M0P_LPUART0,LPUartRC);          ///<清接收中断请求
    LPUart_ClrStatus(M0P_LPUART0,LPUartTC);          ///<清发送中断请求
    LPUart_DisableIrq(M0P_LPUART0,LPUartRxIrq);      ///<禁止接收中断
    LPUart_EnableIrq(M0P_LPUART0,LPUartTxIrq);       ///<使能发送中断
    EnableNvic(LPUART0_IRQn,IrqLevel3,TRUE);         ///<系统中断使能
}

///< 端口配置
void App_LpUartPortCfg(void)
{
    stc_gpio_cfg_t stcGpioCfg;

    DDL_ZERO_STRUCT(stcGpioCfg);

    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);

    ///<TX
    stcGpioCfg.enDir =  GpioDirOut;
    Gpio_Init(GpioPortB,GpioPin10,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortB,GpioPin10,GpioAf4); //配置PA00为LPUART1_TX

    //<RX
    stcGpioCfg.enDir =  GpioDirIn;
    Gpio_Init(GpioPortB,GpioPin11,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortB,GpioPin11,GpioAf3); //配置PA01为LPUART1_RX
}

回答 +关注 7
1267人浏览 0人回答问题 分享 举报
0 个回答

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