CH582F串口1在程序执行一半后,只用TxD发送,而RxD用于ADC应用,可行吗?

我们串口1初始化后,在程序的中间想把RxD用作其他功能,只用TxD做输出,可以这样操作吗?

配置为其他功能的时候,将串口重新初始化,然后将rx作为通用gpio翻转,初始化的时候屏蔽这个初始化的配置。

image.png


也就是准备设置为ADC之前,先把串口重新初始化为您图片的方式,然后就可以将这个IO用作其他功能了是吗?


串口引脚初始化的时候不要操作RX的引脚,将RX引脚作为通用GPIO。然后UART1_DefInit的时候屏蔽RB_FCR_RX_FIFO_CLR。


TECH_Lpc,您好,感谢您耐心回复

我的诉求是,在开机前5分钟使用串口,然后将RxD作为ADC检测功能,按照您的说法,第一次程序初始化假如是:

    GPIOA_SetBits(bTXD1);  // 让TXD一直输出高电平

    GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);

    UART1_DefInit();

那么5分钟过后,重新设置R0_UART1_FCR屏蔽RB_FCR_RX_FIFO_CLR寄存器即可,还是说全部将UART1_DefInit执行(其中R0_UART1_FCR进行修改


如果一开始就不使用rx引脚,直接在初始化的时候将RB_FCR_RX_FIFO_CLR屏蔽掉。

如果刚开始使用rx作为串口,程序使用一段时间后不需要了,则将RB_FCR_RX_FIFO_CLR置为复位态,并且将rx的引脚作为通用GPIO使用就可以了。建议你实际的操作测试一下,比如直接将这个引脚进行GPIO的翻转,看看波形和串口的收发是否正常。



OK,您这么说我就理解了。


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