wanyhong 发表于 2020-12-18 18:06

PA14,PA15用作串口1,不能正常通讯,请赐教

如下配置后,发送数据正常,接收数据全部为0,中断功能正常,请赐教,非常感谢
使用的单片机是HC32L130, PA14已经禁用SWD,配置为普通IO,并且发送是正常的,现在看是PA15不能接收,谢谢
配置代码

                ///<TX
                stcGpioCfg.enDir =GpioDirOut;
                Gpio_Init(GpioPortA,GpioPin14,&stcGpioCfg);
                Gpio_SetAfMode(GpioPortA,GpioPin14,GpioAf1); //配置PA14为UART1_TX

                //<RX
                stcGpioCfg.enDir =GpioDirIn;
            stcGpioCfg.enPu = GpioPuEnable;
            stcGpioCfg.enPd = GpioPdDisable;
                Gpio_Init(GpioPortA,GpioPin15,&stcGpioCfg);
                Gpio_SetAfMode(GpioPortA,GpioPin15,GpioAf2); //配置PA15为UART1_RX
               
                Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);
                ///<UART 初始化
                stcCfg.enRunMode      = UartMskMode1;               ///<模式3
                stcCfg.enStopBit      = UartMsk1bit;                  ///<1bit停止位
                stcCfg.enMmdorCk      = UartMskNoParity;            ///<多机模式时
                stcCfg.stcBaud.u32Baud= baud;                         ///<波特率9600
                stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div;            ///<通道采样分频配置
                stcCfg.stcBaud.u32Pclk= Sysctrl_GetPClkFreq();      ///</<获得外设时钟(PCLK)频率值
                Uart_Init(M0P_UART1, &stcCfg);                        ///<串口初始化
               
                ///<UART 中断使能
                Uart_ClrStatus(M0P_UART1,UartRC);          ///<清接收中断请求
                Uart_ClrStatus(M0P_UART1,UartTC);          ///<清发送中断请求
                Uart_EnableIrq(M0P_UART1,UartRxIrq);      ///<使能接收中断
                Uart_DisableIrq(M0P_UART1,UartTxIrq);       ///<禁止发送中断
            EnableNvic(UART1_IRQn, IrqLevel3, TRUE);       ///<系统中断使能

小明的同学 发表于 2020-12-18 23:04

官方有没有参考的代码看看。

幸福小强 发表于 2020-12-19 22:14

官方的例子是用的哪个端口

heisexingqisi 发表于 2020-12-22 09:07

手册上说这个管脚可以了吗

zhamatu 发表于 2020-12-22 16:03

SWD用作串口引脚是不是还需要其他的操作呢,最好不要搞这么偏门的应用

鎏漓 发表于 2021-1-8 10:02

为什么你P14,P15引脚复用不一致呢

martinhu 发表于 2021-1-8 15:56

P14禁用SWD功能,调用的库函数还是手写的寄存器?

kcfoo1 发表于 2021-1-27 13:09

查看接收中断标志位,如果置位就是中断入口或者设置不对,如果没置位就是串口io设置不对,串口能发送说明串口参数设置是对的,

martinhu 发表于 2021-1-27 13:55

本帖最后由 martinhu 于 2021-1-27 17:06 编辑

PA14和PA15复用为GPIO,不是简单的设置GPIO的SEL寄存器那么简单,
需要调用sysctrl.c里面的函数(不同版本的库,可能函数名字和写法不一样),先把SWD接口改成普通IO,然后才能配置SEL寄存器注意:debug的时候,调用这个函数之前最好设置足够长时间的延时,不然执行之后,就不能仿真了,也可能会影响下次SWD接口的下载!!!



七毛钱 发表于 2021-1-27 16:56

有没有官方的参考代码,想看看
页: [1]
查看完整版本: PA14,PA15用作串口1,不能正常通讯,请赐教