一、定义UART引脚后不及时初始化UART外设,则RS232不断接收到0x00而改用RS485
根据STM32中文参考手册描述“如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。”
UART输出引脚一般被定义为复用开漏输出模式,如果在配置引脚之后不及时激活外设UART,根据上面的描述输出将不确定,输出0x00是可能的,所以配置引脚之后一定要立即激活对应外设,要点是激活(ENABLE)外设而并非配置(config),习惯上都是先配置外设接着去激活,把这个过程称为初始化,所以如果初始化外设时没有同时激活外设,依然会出现类似问题。
二、将GPIO配置为开漏输出(OD)默认输出为0?
复位期间和刚复位后,复用功能没有开启,I/O端口被配置为浮空输入模式;
当GPIO被配置为通用开漏输出时,输出缓冲器被激活,而输出缓冲器复位值为0x0000 0000,故引脚被配置为输出(通用开漏和通用推挽)状态时,默认输出状态为0。
为可靠期间,一般在配置完GPIO应立即给输出引脚一个确定的初始状态。
三、对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)
网友评论