STM32输入上拉下拉 寄存器怎么设置实现

发布者:国宝集团最新更新时间:2018-08-26 来源: 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操作

推荐阅读最新更新时间:2024-03-16 16:12

单片机学习笔记特殊功能寄存器
 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。   在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器5
[单片机]
基于STM32和CPLD的等精度测频设计
在电子工程、资源勘探、仪器仪表等相关应用中,频率测量是电子测量技术中最基本最常见的测量之一,频率计也是工程技术人员必不可少的测量工具。但是,传统的频率测量方法在实际应用中有较大的局限性,基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化,传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低。本文中提出一种基于ARM与CPLD宽频带的数字频率计的设计,以微控器STM32作为核心控制芯片,利用CPLD可编程逻辑器件,实现闸门测量技术的等精度测频。 本设计的技术指标: 测频范围:1Hz~200MHz,分辨率为0.1Hz,测频相对误差百万分之一。 周期测量:信号测量范围
[工业控制]
基于<font color='red'>STM32</font>和CPLD的等精度测频设计
stm32专题二十四:ADC独立模式单通道采集
ADC独立单通道采集 使用的是野火stm32f103vet6指南者开发板,硬件连接图如下: 实验一:独立单通道中断读取ADC值 编程要点: 初始化ADC用到的GPIO; 初始化ADC初始化结构体; 配置ADC时钟,配置通道的转换顺序和采样时间; 使能ADC转换完成中断,配置中断优先级; 使能ADC,准备开始转换; 校准ADC; 软件触发ADC,真正开始转换; 编写中断服务函数,读取ADC转换数据; 编写main函数,把转换的数据打印出来; 代码如下: bsp_adc.c #include bsp_adc.h static void ADCx_GPIO_Config(void) { GPIO_Ini
[单片机]
<font color='red'>stm32</font>专题二十四:ADC独立模式单通道采集
STM32学习笔记——GPIO工作原理(八种工作模式)
  STM32F103RCT6一共有4组IO口,一共有16*3+3=51个IO口    GPIOA0~A15   GPIOB0~B15   GPIOC0~C15   GPIOD0~D2 一、GPIO 功能描述   每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。 STM32 的 IO 口可以由软件配置成如下 8 种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏
[单片机]
<font color='red'>STM32</font>学习笔记——GPIO工作原理(八种工作模式)
当前STM32几种最流行的开发环境对比
序 时间进入2020年年底,越来越多的开发者跟我一样不再满足于高级语言和WEB前后端开发,逐渐开始把玩各类MCU,MPU,FPGA等硬件产品,同时这些嵌入式开发的门槛也随着互联网的发展渐渐降低,更好地吸引了众多开发者的加入。毫无疑问,那些软硬结合、能解决实际生产生活需求的小项目,总是更能引发人们的好奇心和学习欲望。 今天我们就来谈谈当前最流行的几种STM32家族MCU的开发方案,主要向新人朋友们介绍几种集成开发环境,对于大佬们来说,如果您还在使用破解版的KEIL开发项目,不妨试试我下面提到的另外几种IDE,或许会有更好的开发体验。 Keil5 最正统,最经典的嵌入式MCU开发环境。 价格/跨平台 ★ 收费。国内由米尔科技
[单片机]
STM32 DMA应用中的几个常见问题
1、概念上的误解 我们知道DMA传输是在DMA请求下,将数据从源端传输到目的端。 常有人将DMA请求跟DMA的源端或目的端混为一谈。这里,我们可以将DMA传输类比成收发快递,发件方即DMA源端,收件方即DMA目的端,而DMA请求端就是呼叫快递的人。这个呼叫快递的人可能是发件方、也可能是收件方,还可能是另外第三方。比方你要发个快递,叫快递的人可能是公司的前台美眉。 具体到我们STM32应用,比方通过DMA将内存数据传输给UART DR寄存器发送出去,源端是存储相关待发送数据的内存区域,目的端是UART DR数据寄存器。至于DMA请求,可以是UART发送空事件【TXE】,也可以是定时器的某个周期性触发事件等。 在STM32各个系列的参
[单片机]
串行显示驱动器PS7219及单片机的SPI接口设计
   0 引 言   在单片机的应用系统中,为了便于人们观察和监视单片机的运行情况,常常需要用显示器显示运行的中间结果及状态等等。因此显示器往往是单片机系统必不可少的外部设备之一。常用的显示器有很多种,其中LED(发光二极管显示器)是应用较多的一种,它特别适用于强光和光线极弱的场合。   要使LED显示,必须提供段选码和位选码。传统的硬件译码显示接口广泛采用由中央处理器CPU(如:Intel 8031)扩展I/O口(如:8255),然后再使用逻辑门驱动芯片(如7407等)驱动相应的位码和段码。这种设计,芯片间连线十分复杂,系统工作可靠性不高,已越来越不适应单片机系统集成化、小型化的发展要求。特别是系统并行扩展I/O,其缺点十分明
[电源管理]
Event Recoder调试组件在stm32的使用
本文目标:Event_Recoder调试组件在stm32上的使用 按照本文的描述,应该可以在你所处的硬件上跑通代码。 先决条件:装有编译和集成的开发环境,比如:Keil uVision5。 板子硬件要求:无,属于调试功能。 起源 因为做产品开发,设计东西有时候考虑得多,mcu的并没有多余的串口供使用调试,在调试一些初期进行验证时,必要的调试的打印信息是需要的。 Event Recoder调试组件简介 嵌入式的Event_Recoder调试组件是一种可以在MDK开发环境下使用的高级调试工具,它可以记录软件运行的一些标志信息,并以图形化的形式显示出来。它可以帮助你了解和分析内部操作,支持Keil RTX操作系统调试以及MDK自带的
[单片机]
Event Recoder调试组件在<font color='red'>stm32</font><font color='red'>上</font>的使用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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