打印
[技术问答]

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

[复制链接]
1306|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wanyhong|  楼主 | 2020-12-18 18:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如下配置后,发送数据正常,接收数据全部为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 | 只看该作者
手册上说这个管脚可以了吗

使用特权

评论回复
5
zhamatu| | 2020-12-22 16:03 | 只看该作者
SWD用作串口引脚是不是还需要其他的操作呢,最好不要搞这么偏门的应用

使用特权

评论回复
6
鎏漓| | 2021-1-8 10:02 | 只看该作者
为什么你P14,P15引脚复用不一致呢

使用特权

评论回复
7
martinhu| | 2021-1-8 15:56 | 只看该作者
P14禁用SWD功能,调用的库函数还是手写的寄存器?

使用特权

评论回复
8
kcfoo1| | 2021-1-27 13:09 | 只看该作者
查看接收中断标志位,如果置位就是中断入口或者设置不对,如果没置位就是串口io设置不对,串口能发送说明串口参数设置是对的,

使用特权

评论回复
9
martinhu| | 2021-1-27 13:55 | 只看该作者
本帖最后由 martinhu 于 2021-1-27 17:06 编辑

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



使用特权

评论回复
10
七毛钱| | 2021-1-27 16:56 | 只看该作者
有没有官方的参考代码,想看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

1

粉丝