历史上的今天

今天是:2024年08月26日(星期一)

正在发生

2018年08月26日 | STM32输入上拉下拉 寄存器怎么设置实现

发布者:国宝集团 来源: eefocus关键字:STM32  输入上拉下拉  寄存器 手机看文章 扫描二维码
随时随地手机看文章

在输出模式下:ODR是数据输出寄存器
但是在 输入模式下,同时也用来配置上拉下拉设置。


在Alientek的源码中的按键输入实验中有如下一段初始化代码:
void KEY_Init(void){
      RCC->APB2ENR|=1<<2;     //使能PORTA时钟
    GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入      
    GPIOA->CRL|=0X00000008;  
    GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入      
    GPIOA->CRH|=0X80800000;                   
    GPIOA->ODR|=1<<13;       //PA13上拉,PA0默认下拉
    GPIOA->ODR|=1<<15;       //PA15上拉
}
经常有用户问道,为什么端口设置为输入,然后还要对输出寄存器进行写操作, GPIOA->ODR|=1<<15;       //PA15上拉
在中文数据手册里面的确没有看到说明,下面是英文手册里面的(从网上找的):


    即在将端口设置为上拉/下拉输入的状况下,是由将

GPIOx->ODR相应位设置为0或1来设置为下拉输入还是上拉输入

的。





0000(0)模拟输入,通常可用在AD采样 
0100(4)浮空输入,如果有外部的上拉或下拉,则可以用这个 
1000(8)上/下拉输入,使能内部上/下拉结构,使端口在空闲情况下置为某种电平,具体是某种电平就由GPIOx->ODR来决定。置1则高电平,置0则低电平。


在库函数中,是这么实现的 在

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

  1. // 通过写 ODR设置 上拉下拉输入模式

  2.         /* Reset the corresponding ODR bit */

  3.         if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)

  4.         {

  5.           GPIOx->BRR =(((u32)0x01)<< pinpos);    //写 ODR相应位 = 0

  6.         }

  7.         /*Set the corresponding ODR bit */

  8.         if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)

  9.         {

  10.           GPIOx->BSRR =(((u32)0x01)<< pinpos);//写 ODR相应位 = 1

  11.         }




ODR寄存器


关键字:STM32  输入上拉下拉  寄存器 引用地址:STM32输入上拉下拉 寄存器怎么设置实现

上一篇:STM32 GPIO的8种工作模式及相关配置寄存器
下一篇:STM32 学习三 GPIO操作

推荐阅读

DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,...
近日,中国移动、中国联通和中国电信先后公布了2019年上半年业绩,媒体报道中“日赚4亿”的字眼再次撩拨着网友的神经。 三大运营商上半年业绩 但实际上,今年上半年三家运营商无一例外都陷入了增长瓶颈,集体出现整体营收同比下滑。更严重的是中国移动,甚至出现营收、通信服务收入和净利润三个指标同时下滑,创下近十年来的最差表现。 这背后是流量红利...
日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,Vishay Siliconix microBRICKÔ 系列负载点(POL)DC/DC转换器被电子发烧友(Elecfans)评为2020年中国人工智能卓越创新奖“智能传感器/存储/电源管理”类“最具创新价值产品”。 今年首次举办的“中国人工智能卓越创新奖”,旨在表彰过去一年推出的对AI行业产生深远影响的产品和技术。...
引脚EXTAL0:晶振入,XTAL0:晶振出配置MCG_C7的OSCSEL为0,选择外部晶振所以MCG_C1的FRDIV需要取后面的值,例如8M晶振取011即256分频,结果为31.25khz,在PLL模式下,MCG_C1的FRDIV在晶振分频以后必须在31.25khz-39.625khzMCG_C6中PLLS说明,PLL应为2-4MHZ,则MCG_C5中的PRDIV0的数值被外部晶振频率除之后为2-4MHZ.MCG_SC中FCRDIV为快速时钟,外部晶振频率除以FCDIV的结果须在31.25KHZ-4MHZ

史海拾趣

问答坊 | AI 解惑

直流逆变器的研究

直流逆变器的研究…

查看全部问答∨

ds12c887

ds12c887的闹铃怎么用,写的控制命令是什么啊…

查看全部问答∨

GSM modem与GSM modem连接,必须用data card为SIM card才能做文字传送吗?

如题。因为我用电话的SIM卡,怎么都不能进入data call的模式来传送文字。很急。。希望得到帮助~…

查看全部问答∨

wince 2.11是否支持.net

如题, 如果不支持那怎么开发程序(各种语言都可) 如有资料请传给我 shuwu520@sina.com…

查看全部问答∨

分析LED照明趋势,来谈谈吧

 LED的效率趋势如何?以各种光源的发光效率来看,白炽灯和卤素灯只有20~30lm/W,省电灯泡大约在70lm/W,HID能够增加到100lm/W,灯管发光效率目前微增至近120lm/W,不过在2010年分别只有约80lm/W和不到30lm/W的LED和OLED,却都呈现快速改善的态势,未来 ...…

查看全部问答∨

有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊

有没有用AVR控制USB芯片PDIUSBD12进行数据传输的啊 我最近要做一个AVR16与PC机数据传输的项目,有没有调过USB的 我选择的芯片是PDIUSBD12,如果有调试过的朋友可以联系我么,或者分享给我点经验,谢谢了 (不知道我把帖子发表到这个AVR板块对不 ...…

查看全部问答∨

求助帖

怎么用库函数禁用SWD/JTAG功能…

查看全部问答∨

FPGA与DSP间的通信

•    跨时钟域的设计:FIFO,双RAM,RAM+MUX,等 •    编写FPGA程序实现DSP的外设 •    编写DSP程序,通过EMIF接口访问FPGA内部的存储器…

查看全部问答∨

使用ADSP-CM408F ADC控制器的电机控制反馈采样时序

使用ADSP-CM408F ADC控制器的电机控制反馈采样时序 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved