STM32系列MCU在串口配置时RX引脚通常配置为浮空输入模式,该模式使得RX引脚输入阻抗高,抗干扰能力弱,很容易受到干扰,这些干扰包括外部电磁干扰,也包括系统内部干扰。特别是内部干扰,例如,该引脚靠近发送引脚TX,若采用RS485芯片扩展串口,还靠近发送使能DE引脚,通常引脚靠近,走线也比较近,所以,RX引脚很容易被上述引脚(TX和DE)和布线上的信号干扰,特别采用空闲中断接收的软件设计时,会触发额外的接收中断,尽管该中断不会产生实际结果(用户中断通常会有数据合理性判断),但是,它会干扰系统正常运行,带来不必要的软硬件资源消耗,甚至产生难以预料的错误。
为了避免上述干扰,应在RX引脚上加一个上拉电阻,电阻值在2.2K左右即可,通常小的阻值抗干扰能力较强。如果在硬件设计时未加上拉电阻,可在软件设计时,将RX配置成上拉模式。例如在cubeMAX串口配置时,通常默认RX引脚的GPIO Seting 为No pull-up and No pull-down。为了将RX配置为上拉(pull-up)输入,在cubeMAX的System Core选项卡下,选GPIO,在右侧的选项卡中选USART,在其下面的列表中选中对应的USARTx_RX引脚所在行(x代表1,2,...串口号),则下面的Pxyy Configuration框中的GPIO Pull-up/Pull-down右边选项框中,选Pull-up。其中Pxyy中的x表示GPIO端口名称A或B或C...;yy代表GPIO端口编号1,2,...。