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

[复制链接]
2188|7
 楼主| freenes 发表于 2015-7-1 12:12 | 显示全部楼层 |阅读模式
按手册说的,在输入模式下,输出缓冲器被禁止,看图也是输出开关被断开
我的理解是这个时候操作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跟引脚是断开的 QQ图片20150701161719.png
 楼主| freenes 发表于 2015-7-1 16:22 | 显示全部楼层
s_f_tan 发表于 2015-7-1 15:41
F1的上下拉的状态就是由ODR驱动的,'1' 上拉,'0'下拉.
你的ODR=0xfff,选择为输入上下拉的脚都上拉到Vcc了 ...

而且上下拉是有配置寄存器控制的
desertsailor 发表于 2015-7-1 21:07 | 显示全部楼层
二楼说得对,上下拉电阻由ODR控制,看手册
s_f_tan 发表于 2015-7-2 08:36 | 显示全部楼层
配置成输入上下拉状态时,上下拉是由ODR来控制的,手册也可翻翻看,最简单的就是程序改一下就可验证了。
s_f_tan 发表于 2015-7-2 08:37 | 显示全部楼层
你说配置寄存器到底是配成上拉还是下拉,有的时候手册上要多看一下
fanxsd 发表于 2015-7-2 09:16 | 显示全部楼层
datasheet 写的已经够详细了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部