打印
[STM32F1]

为什么GPIO设置成上下拉输入模式后,输出依然有效?

[复制链接]
1888|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
按手册说的,在输入模式下,输出缓冲器被禁止,看图也是输出开关被断开
我的理解是这个时候操作ODR已经不对管脚产生作用了
但我测试了下,设置成下拉模式,然后ODR全部FFFF,用万用表测量,仍是高电平,这不科学啊?

测试程序如下,片子是STM32F103C8T6,等下下到ZET6里试试

int main(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;               
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);               
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;                       
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
       
        GPIOA->ODR=0xffff;
while(1);
}
沙发
s_f_tan| | 2015-7-1 15:41 | 只看该作者
F1的上下拉的状态就是由ODR驱动的,'1' 上拉,'0'下拉.
你的ODR=0xfff,选择为输入上下拉的脚都上拉到Vcc了

使用特权

评论回复
板凳
freenes|  楼主 | 2015-7-1 16:19 | 只看该作者
不对吧,上下拉是有引脚内的两个电阻与开关控制的吧,除非手册和图描述有错,配置成输入模式下,ODR跟引脚是断开的

使用特权

评论回复
地板
freenes|  楼主 | 2015-7-1 16:22 | 只看该作者
s_f_tan 发表于 2015-7-1 15:41
F1的上下拉的状态就是由ODR驱动的,'1' 上拉,'0'下拉.
你的ODR=0xfff,选择为输入上下拉的脚都上拉到Vcc了 ...

而且上下拉是有配置寄存器控制的

使用特权

评论回复
5
desertsailor| | 2015-7-1 21:07 | 只看该作者
二楼说得对,上下拉电阻由ODR控制,看手册

使用特权

评论回复
6
s_f_tan| | 2015-7-2 08:36 | 只看该作者
配置成输入上下拉状态时,上下拉是由ODR来控制的,手册也可翻翻看,最简单的就是程序改一下就可验证了。

使用特权

评论回复
7
s_f_tan| | 2015-7-2 08:37 | 只看该作者
你说配置寄存器到底是配成上拉还是下拉,有的时候手册上要多看一下

使用特权

评论回复
8
fanxsd| | 2015-7-2 09:16 | 只看该作者
datasheet 写的已经够详细了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝