STM32Cube之GPIO能读取设置为输出模式引脚的高低电平

在看HAL库代码的时候,发现如果是HAL_GPIO_ReadPin读取设置为输出模式的引脚高低电平也是能读取成功的。这个现象引起作者的好奇心,进一步看了STM32的参考手册(如下图3)与HAL_GPIO_WritePin函数的实现(如下图2)。答案就很显然了。HAL_GPIO_WritePin是通过修改GPIO的BSRR寄存器来达到将具体某个引脚置位或清零的。从参考手册也可以发现,修改BSRR的同时会修改IDR寄存器。巧了HAL_GPIO_ReadPin就是读取IDR寄存器的。所以HAL_GPIO_ReadPin能读取输出模式的引脚,但是要注意,若是你需要和外界交互的比如I2C(模拟I2C),SDA引脚就需要设置为输入模式了。好了本文就到这里了,下次见。

 

STM32Cube之GPIO能读取设置为输出模式引脚的高低电平_第1张图片

                                                                 图1

STM32Cube之GPIO能读取设置为输出模式引脚的高低电平_第2张图片

                                                                 图2

STM32Cube之GPIO能读取设置为输出模式引脚的高低电平_第3张图片

                                                                 图3

你可能感兴趣的:(单片机)