OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5909|回复: 7

IO口设为下拉输入之后,为何还需置1才能使用?

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-7-18
在线时间
0 小时
发表于 2014-7-31 21:09:30 | 显示全部楼层 |阅读模式
5金钱


这是库函数版不完全手册,二十七章红外遥控实验里的一段代码(368页)
看的时候就觉得比较奇怪,为什么还要加一句GPIO_SetBits呢?

尝试把这句注释并烧录到板子之后,发现无法接收到信号,加了一些代码调试后发现是没有捕抓到高电平
请问这是什么原因呢?

最佳答案

查看完整内容[请看2#楼]

GPIO_SetBits,是用来控制上拉的.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-31 21:09:31 | 显示全部楼层
GPIO_SetBits,是用来控制上拉的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

19

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2013-9-2
在线时间
1 小时
发表于 2014-7-31 21:09:31 | 显示全部楼层


配置为上拉,需要配置PXODR寄存器,让对应该引脚的位为1。而PXODR寄存器其实就是GPIOx_ODR寄存器(我的理解),这个寄存器是控制IO输出电平的,它的复位默认值是00000000H,所以使用GPIO_SetBits这个库函数控制对应IO口输出高电平,让PXODR寄存器的对应位置1,。这样才算完成整个配置过程。
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-1 01:11:48 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那为什么不直接将GPIO_Mode设置为IPU呢?
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-8-1 20:00:29 | 显示全部楼层
回复【4楼】榆木林:
---------------------------------
原来如此!
回复

使用道具 举报

29

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1530
金钱
1530
注册时间
2012-9-4
在线时间
262 小时
发表于 2014-8-2 15:06:44 | 显示全部楼层
楼主不是配置为下拉(GPIO_Mode_IPD)的嘛,那照整个配置过程PxODR寄存器不是应该配置为0嘛,不是应该将IO拉低(   GPIO_ResetBits(GPIOA,GPIO_Pin_1)   )......
为什么配置为下拉模式.后面还输出高电平呢??楼主写错了还是我理解错了啊
STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32---STM32
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-7-18
在线时间
0 小时
 楼主| 发表于 2014-9-7 14:28:34 | 显示全部楼层
回复【6楼】aben:
---------------------------------
不是我写的,是书上这么写的,我也感觉很疑惑
回复

使用道具 举报

5

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2017-12-23
在线时间
77 小时
发表于 2019-7-27 14:11:33 | 显示全部楼层
file:///C:\Users\Q\AppData\Roaming\Tencent\Users\458074260\QQ\WinTemp\RichOle\TQSIFK}73~GLG%29UC)V}IR.png可是在按键输入实验里面,也配置了上拉下拉输入,但是没有加GPIO_SetBits()和GPIO_ResetBits()啊,这又是为什么啊?有没有大神能解释下

void KEY_Init(void)
{
       
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//ê1ÄüPORTA,PORTCê±Öó

        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//1رÕjtag£¬ê1ÄüSWD£¬¿éòÔóÃSWDÄ£ê½μ÷êÔ
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;//PA15
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //éèÖÃ3ééÏà-êäèë
        GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOA15
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;//PC5
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //éèÖÃ3ééÏà-êäèë
        GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉGPIOC5

        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;//PA0
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0éèÖÃ3éêäè룬ĬèÏÏÂà-          
        GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉGPIOA.0
       
}


回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 17:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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