2018-07-25 关于STM32使用中遇到若干问题小结

一、定义UART引脚后不及时初始化UART外设,则RS232不断接收到0x00而改用RS485

    根据STM32中文参考手册描述“如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。”

    UART输出引脚一般被定义为复用开漏输出模式,如果在配置引脚之后不及时激活外设UART,根据上面的描述输出将不确定,输出0x00是可能的,所以配置引脚之后一定要立即激活对应外设,要点是激活(ENABLE)外设而并非配置(config),习惯上都是先配置外设接着去激活,把这个过程称为初始化,所以如果初始化外设时没有同时激活外设,依然会出现类似问题。

二、将GPIO配置为开漏输出(OD)默认输出为0?

    复位期间和刚复位后,复用功能没有开启,I/O端口被配置为浮空输入模式;

    当GPIO被配置为通用开漏输出时,输出缓冲器被激活,而输出缓冲器复位值为0x0000 0000,故引脚被配置为输出(通用开漏和通用推挽)状态时,默认输出状态为0。

    为可靠期间,一般在配置完GPIO应立即给输出引脚一个确定的初始状态。

三、对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)

你可能感兴趣的:(2018-07-25 关于STM32使用中遇到若干问题小结)