CH559 设置P3口推挽输出后 串口0无法使用
main( ) 
{
	
	
		UINT8 re_butter = 0;
		UINT8 tx_butter ;
		UINT8 a_flag;
		UINT8 b_flag;
		UINT8 c_retain = 0;
		UINT8 d_retain = 0;
		UINT8 power_flag;
	
             //CfgFsys( );                                                                //CH559时钟选择配置   
             mDelaymS(5);                                                              //等待内部晶振稳定
            P4_DIR = 0xff;	

		
		CH559GPIOModeSelt(3,1,2);
		CH559GPIOModeSelt(3,1,4);
		CH559GPIOModeSelt(0,1,5);
		CH559GPIOModeSelt(3,2,3);
		CH559GPIOModeSelt(3,2,5);
	
    mInitSTDIO( );                                                             //串口0,可以用于调试
    printf("start ...\n");  
      
		P3_3 = 1;
		P3_5 = 0;
	
    XBUS_AUX |=  bALE_CLK_EN;                                                  //关闭RS485模式 RS485_EN = 0;
    SER1_IER |= bIER_PIN_MOD1| bIER_PIN_MOD0;                                  //中断使能寄存器,脚位设置P2.6和P2.7,TNOW(P2.5)
    RXD1_ = 1;
    //CH559GPIOInterruptInit();
    IE_GPIO = 1;                                                               //使能GPIO中断
    EA  = 1;                                                                   //使能全局中断 
    while(1){
		
			

					re_butter =  CH559UART0RcvByte();
					CH559UART0SendByte(re_butter);
						
		
		}
}

这是写的程序  UART0可以发送数据  但 无法接收到数据

www.wch.cn/downloads/CH559EVT_ZIP.html

你好,附件是CH559EVT,里面有串口1的收发演示参考,可以先参考一下例程再实现串口0的收发,流程是一致的。

注意:做串口0收发功能时建议不用打印功能,尤其使用串口中断的情况下。


我使用的是EVT例程中的UART0例程     加了一个GPIO例程中的  CH559GPIOModeSelt   函数


在UART0例程的main函数中加了CH559GPIOModeSelt(3,2,3);


然后发现串口  uart0  接收功能   就不能用了


是需要在改一些什么吗?





我将P3端口     OC设置成推挽输出   UART0接收功能就不能用了


PORT_CFG &= ~(bP0_OC << 3);

image.png


您好,您需要将CH559GPIOModeSelt函数中case 2。
推挽输出模式中的
Pn_DIR |= ~(1<修改成
Pn_DIR |= (1<


修改方式如图:

download.png


只有登录才能回复,可以选择微信账号登录