[技术问答] PA14,PA15用作串口1,不能正常通讯,请赐教

[复制链接]
 楼主| wanyhong 发表于 2020-12-18 18:06 | 显示全部楼层 |阅读模式
如下配置后,发送数据正常,接收数据全部为0,中断功能正常,请赐教,非常感谢
使用的单片机是HC32L130, PA14已经禁用SWD,配置为普通IO,并且发送是正常的,现在看是PA15不能接收,谢谢
配置代码

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

  5.                 //<RX
  6.                 stcGpioCfg.enDir =  GpioDirIn;
  7.             stcGpioCfg.enPu = GpioPuEnable;
  8.             stcGpioCfg.enPd = GpioPdDisable;
  9.                 Gpio_Init(GpioPortA,GpioPin15,&stcGpioCfg);
  10.                 Gpio_SetAfMode(GpioPortA,GpioPin15,GpioAf2); //配置PA15为UART1_RX
  11.                
  12.                 Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);  
  13.                 ///<UART 初始化
  14.                 stcCfg.enRunMode        = UartMskMode1;                 ///<模式3
  15.                 stcCfg.enStopBit        = UartMsk1bit;                  ///<1bit停止位
  16.                 stcCfg.enMmdorCk        = UartMskNoParity;            ///<多机模式时
  17.                 stcCfg.stcBaud.u32Baud  = baud;                         ///<波特率9600
  18.                 stcCfg.stcBaud.enClkDiv = UartMsk8Or16Div;              ///<通道采样分频配置
  19.                 stcCfg.stcBaud.u32Pclk  = Sysctrl_GetPClkFreq();        ///</<获得外设时钟(PCLK)频率值
  20.                 Uart_Init(M0P_UART1, &stcCfg);                          ///<串口初始化
  21.                
  22.                 ///<UART 中断使能
  23.                 Uart_ClrStatus(M0P_UART1,UartRC);          ///<清接收中断请求
  24.                 Uart_ClrStatus(M0P_UART1,UartTC);          ///<清发送中断请求
  25.                 Uart_EnableIrq(M0P_UART1,UartRxIrq);      ///<使能接收中断
  26.                 Uart_DisableIrq(M0P_UART1,UartTxIrq);       ///<禁止发送中断
  27.             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接口的下载!!!
1814160112c6ef0c63.png
5698360112c950e393.png

七毛钱 发表于 2021-1-27 16:56 | 显示全部楼层
有没有官方的参考代码,想看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部