搜索

HC32L136K8TA的LpUart通信不上

[复制链接]
1189|2
D_dx1|  楼主 | 2021-6-10 08:59 | 显示全部楼层 |阅读模式
把官方历程lpuart_int里面的LpUart1修改为我实际使用的LpUart0(PC04-TXD   PC05-RXD),一直通信不上,发送接收都没反应,硬件排查没什么问题。用另外1个非低功耗的串口Uart0是正常的。
/******************************************************************************
* Include files
******************************************************************************/
#include "ddl.h"
#include "lpuart.h"
#include "lpm.h"
#include "gpio.h"
#include "sysctrl.h"

/******************************************************************************
* Local pre-processor symbols/macros ('#define')                           
******************************************************************************/

/******************************************************************************
* Global variable definitions (declared in header file with 'extern')
******************************************************************************/

/******************************************************************************
* Local type definitions ('typedef')                                         
******************************************************************************/

/******************************************************************************
* Local function prototypes ('static')
******************************************************************************/

/******************************************************************************
* Local variable definitions ('static')                                      *
******************************************************************************/
uint8_t u8TxData[2] = {0x00,0x55};
uint8_t u8RxData = 00;
/*****************************************************************************
* Function implementation - global ('extern') and local ('static')
******************************************************************************/
void App_LpUartPortCfg(void);
void App_LpUartCfg(void);
/**
******************************************************************************
** \brief  Main function of project
**
** \return uint32_t return value, if needed
**
** This sample
**
******************************************************************************/
int32_t main(void)
{  
    ///< 端口配置
    App_LpUartPortCfg();

    ///< LPUART配置
    App_LpUartCfg();

    //发送数据
    LPUart_SendDataIt(M0P_LPUART0, 0x55);  

    while(1)
    {
        ;
    }
}

///<LPUART0 中断服务函数
void LpUart0_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(GpioPortC,GpioPin4,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortC,GpioPin4,GpioAf1); //配置PC04为LPUART0_TX

    //<RX
    stcGpioCfg.enDir =  GpioDirIn;
    Gpio_Init(GpioPortC,GpioPin5,&stcGpioCfg);
    Gpio_SetAfMode(GpioPortC,GpioPin5,GpioAf1); //配置PC05为LPUART0_RX
}

/******************************************************************************
* EOF (not truncated)
******************************************************************************/




使用特权

评论回复
18621057708| | 2021-6-10 10:30 | 显示全部楼层
使用相同的芯片型号测试,将您提供的代码直接复制替换官方例程的main函数,接线正确的情况下收发正常。
可以用同样的方法试一下,或者检查一下连线或更换芯片

7241260c1792ab8559.png

使用特权

评论回复
D_dx1|  楼主 | 2021-6-11 10:57 | 显示全部楼层
18621057708 发表于 2021-6-10 10:30
使用相同的芯片型号测试,将您提供的代码直接复制替换官方例程的main函数,接线正确的情况下收发正常。
可 ...

现在可以了,谢谢!

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 kk的回忆 得到打赏 ¥600.00
  • 2 名字还没想好 得到打赏 ¥350.00
  • 3 天意无罪 得到打赏 ¥312.00
  • 4 wolfe_yu 得到打赏 ¥210.00
  • 5 呐咯密密 得到打赏 ¥170.00
  • 6 gaoyang9992006 得到打赏 ¥120.00
  • 7 CZF11 得到打赏 ¥100.00
  • 8 年轻的国王 得到打赏 ¥90.00
  • 9 hunteredward 得到打赏 ¥90.00
  • 10 blust5 得到打赏 ¥85.00
在线客服 快速回复 返回顶部 返回列表