21ic问答首页 - HC32L136K8TA的LpUart通信不上
HC32L136K8TA的LpUart通信不上
D_dx12021-06-10
把官方历程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)
******************************************************************************/
/******************************************************************************
* 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)
******************************************************************************/
赞0
现在可以了,谢谢!
评论
2021-06-11
赞0
可以用同样的方法试一下,或者检查一下连线或更换芯片
评论
2021-06-10
您需要登录后才可以回复 登录 | 注册