野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8810|回复: 5

GPIO配置为输入上下拉时为什么需要设置BSRR和BRR?

[复制链接]
发表于 2018-5-25 15:52:16 | 显示全部楼层 |阅读模式
看到GPIO_Init()函数,其中对端口配置成输入上拉或下拉时除了正常配置CRL、CRH的相应数据为1000外,还需要操作BSRR和BRR。
当输入上拉时设置BSRR相应位为1,当输入下拉时设置BRR相应位为1,这在原理上是为什么?
回复

使用道具 举报

发表于 2018-5-25 17:25:47 | 显示全部楼层
就是给引脚一个默认电平,其实就是相当于输出高电平和低电平
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-25 22:34:45 | 显示全部楼层
原理上可以讲讲吗?怎么给端口输出1或0就能让输入成上拉或下拉了呢?
回复 支持 反对

使用道具 举报

发表于 2018-5-28 09:41:33 | 显示全部楼层
xiatianyun 发表于 2018-5-25 22:34
原理上可以讲讲吗?怎么给端口输出1或0就能让输入成上拉或下拉了呢?

F103里面没有专门设置输入上拉或者下拉的寄存器,只能是通过设置BSRR和BRR这两个寄存器来控制输出的电平,属于伪上/下拉,在F4里面就有专门的寄存器设置。
回复 支持 反对

使用道具 举报

发表于 2018-5-28 09:41:43 | 显示全部楼层
xiatianyun 发表于 2018-5-25 22:34
原理上可以讲讲吗?怎么给端口输出1或0就能让输入成上拉或下拉了呢?

F103里面没有专门设置输入上拉或者下拉的寄存器,只能是通过设置BSRR和BRR这两个寄存器来控制输出的电平,属于伪上/下拉,在F4里面就有专门的寄存器设置。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-28 15:15:53 | 显示全部楼层
本帖最后由 xiatianyun 于 2018-5-28 15:17 编辑

虽然不是很明白,还是谢谢了!
也就是说这是由硬件决定的,STM32检测如果端口设置成上下拉输入而BSRR或BRR这两个输出寄存器的一个又设置成了1就自动把端口设置成上拉或下拉输入。
上拉输入的时候只能检测到0信号而下拉输入的时候只能检测到1信号。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-23 22:05 , Processed in 0.026614 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表