stm32上拉输入和下拉输入怎么用?

我想请问如果要检测按键,按键一端是接到地的,那么因该设置成上拉输入还是下拉输入啊,我都试了,没区别,测设置成输入的IO口也都是高电平。... 我想请问如果要检测按键,按键一端是接到地的,那么因该设置成上拉输入还是下拉输入啊,我都试了,没区别,测设置成输入的IO口也都是高电平。 展开
 我来答
大野瘦子
高粉答主

推荐于2019-08-14 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:32.8万
展开全部

用法很简单的,你按键是对地的肯定是要上拉输入了,下拉本来就基本是地了。

上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平是输入端的电平应该也为低电平。

如果没有上拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的无法保证的,上拉电阻就是为了保证无信号输入时输入端的电平为高电平,同样还有下拉电阻它是为了保证无信号输入时输入端的电平为低电平。

扩展资料:

需要注意的是,下拉输入和上拉输入是通过端口输出寄存器GPIOx_ODR来区分的。因此,在进行上拉/下拉输入配置时候,虽然对GPIO进行的关于输入的操作,但是仍要对和输出相关的寄存器ODR进行配置。

上述注意事项在实际代码编写时表现为:

GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;  //PA0     

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 下拉输入    

GPIO_Init(GPIOA, &GPIO_InitStructure);  

GPIO_ResetBits(GPIOA,GPIO_Pin_0);       //PA0 下拉 ODR=0<strong>  

</strong>  

GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;  //PA0   

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 下拉输入  

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA0 下拉 ODR=0<strong>

</strong>

虽然GPIO_Mode中区分了上拉输入模式GPIO_Mode_IPU和下拉输入模式GPIO_Mode_IPD,如下图所示,但是在GPIO初始化配置时候仍然需要对ODR寄存器进行设置

意法半导体(中国)投资有限公司
2023-06-12 广告
首先说明下输入io口上拉电阻和下拉电阻的作用: 在没有信号输入的时候,上拉电阻能使读取input值保持为高,而下拉电阻正是相反。有些传感器等元气件,他们的信号输出有效时候会输出一个高电平(或者低电平),无效时候不输出,为开路。。 stm32... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
yajuntiantian
推荐于2018-06-24 · TA获得超过483个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:151万
展开全部
上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平是输入端的电平应该也为低电平。如果没有上拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的无法保证的,上拉电阻就是为了保证无信号输入时输入端的电平为高电平,同样还有下拉电阻它是为了保证无信号输入时输入端的电平为低电平。

这是上拉电阻和下拉电阻的作用!所以你在这里设置时!是没有多大的区别的!
追问
RCC->APB2ENR|=1CRH&=0XFF0FFFFF;
GPIOA->CRH|=0X00E00000;
GPIOA->ODR&=~(1<<13);
这段因该是把PA13设置成了下拉输入,但是我用电压表测是高电平。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaomage_2000
2013-08-08 · TA获得超过3621个赞
知道大有可为答主
回答量:1772
采纳率:100%
帮助的人:836万
展开全部
你按键是对地的肯定是要上拉输入了,下拉本来就基本是地了,怎么检测啊
更多追问追答
追问
可是我设置了上拉和下拉,结果都一样
追答
你怎么检测的? 开了端口时钟了没?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
佘暄玲z
2018-06-23 · TA获得超过881个赞
知道小有建树答主
回答量:616
采纳率:61%
帮助的人:208万
展开全部
1,按键一端到地,则设置上拉,按键无触发时是1,按键按下,则检测到0;
2,GPIOA_CRH |=0x00E00000;表示把PA13设置成了复用功能开漏输出模式,最大输出速度2MHz,所以你的设置有误,正确的写法是:
GPIOA_CRH |=0x00800000;
GPIOA_ODR |=1<<13;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泉谈轶事5I
2013-08-09 · TA获得超过453个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:202万
展开全部
设置成上拉,设置成输入口。
你是用万用表测的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式