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); ///<系统中断使能 官方有没有参考的代码看看。 官方的例子是用的哪个端口 手册上说这个管脚可以了吗 SWD用作串口引脚是不是还需要其他的操作呢,最好不要搞这么偏门的应用 为什么你P14,P15引脚复用不一致呢 P14禁用SWD功能,调用的库函数还是手写的寄存器? 查看接收中断标志位,如果置位就是中断入口或者设置不对,如果没置位就是串口io设置不对,串口能发送说明串口参数设置是对的, 本帖最后由 martinhu 于 2021-1-27 17:06 编辑
PA14和PA15复用为GPIO,不是简单的设置GPIO的SEL寄存器那么简单,
需要调用sysctrl.c里面的函数(不同版本的库,可能函数名字和写法不一样),先把SWD接口改成普通IO,然后才能配置SEL寄存器注意:debug的时候,调用这个函数之前最好设置足够长时间的延时,不然执行之后,就不能仿真了,也可能会影响下次SWD接口的下载!!!
有没有官方的参考代码,想看看
页:
[1]