历史上的今天
返回首页

历史上的今天

今天是:2025年04月26日(星期六)

2019年04月26日 | STM32 GPIO 寄存器配置

2019-04-26 来源:eefocus

 一.CRH和CRL的使用:fficeffice" />


       CRH和CRL的使用基本相同,CRH用于控制GPIOX(X表示A---G)的高8位(Pin15---Pin8),而CRL用于控制GPIOX(X表示A---G)的低8位(Pin7----Pin0)。


      二.ODR的使用:


            1.


RCC->APB2ENR|=1<<2;    //使能PORTA时钟             


                    GPIOA->CRH&=0XFFFFFFF0;//清除该位原来的设置


                    GPIOA->CRH|=0X00000003;//PA8 推挽输出           


                    GPIOA->ODR|=1<<8;      //PA8 输出高


     由以上代码看出,PA8设置成了推挽输出。大家都知道一个端口可以输出高电平,也可以输出低电平,而GPIOA->ODR|=1<<8;这个表达式就把PA8设置成了在空闲的时候输出高电平;GPIOA->ODR|=0<<8;这个表达式,把PA8设置成了在空闲的时候输出低电平。


     如果想设置PA8为推挽输出,并且希望输出为低电平,可以不要这个表达式GPIOA->ODR|=0<<8;  ,因为系统会默认端口输出为低电平 。


         2.          

                  RCC->APB2ENR|=1<<2;    //使能PORTA时钟


                 GPIOA->CRH&=0XFF0FFFFF;      


                 GPIOA->CRH|=0X00800000; //PA13设置成上拉/下拉输入                      

                 GPIOA->ODR|=1<<13;        //PA13上拉


    由以上代码看出,PA13设置成了上拉输入,即输入高电平。大家都知道,一个端口设置成了输入模式,那么它可以输入高电平,也可以输入低电平。GPIOA->ODR|=1<<13;      这个表达式把PA13设置成了上拉模式,即表示在端口空闲的时候输入高电平;GPIOA->ODR|=0<<13;这个表达式把PA13设置成了下拉模式,即端口在空闲的时候输入低电平。


    如果想设置PA13为输入模式,并且希望输入低电平,可以不要这个表达式GPIOA->ODR|=0<<13;   ,因为系统会默认端口输入为低电平。


    三.IDR的使用:               


IDR是一个端口输入数据寄存器,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。读出的值为对应IO口的状态。


===========================================================华丽分割线==============================================================



端口低配置寄存器寄存器的复位值为0X4444 4444,,复位值其实就是配置端口为浮空输


 入模式。STM32的CRL控制着每个IO端口(A~G)的低8位的模式。每


 个IO端口的位占用CRL的4个位,高两位为CNF,低两位为MODE。这里我们可以记住几个


 常用的配置,比如0X4表示模拟输入模式(ADC用)、0X3表示推挽输出模式(做输出口用,


 50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口的第二


 功能,50M速率)。


 CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8


 位输出口。这里我们对CRH就不做详细介绍了。


 给个实例,比如我们要设置PORTC的11位为上拉输入,12位为推挽输出。代码如下:


GPIOA->CRH&=0XFFFFFFF0; 


  GPIOA->CRH|=0X00000003;//PA8 推挽输出    


        GPIOA->ODR|=1<<8;     

 //PA8 输出高


再如:


 GPIOC->CRH&=0XFFF00FFF;//清掉这2个位原来的设置,同时也不影响其他位的设置


 GPIOC->CRH|=0X00038000; //PC11输入,PC12输出


 GPIOC->ODR=1<<11;//PC11上拉


 通过这3句话的配置,我们就设置了PC11为上拉输入,PC12为推挽输出

推荐阅读

史海拾趣

Filtran Ltd公司的发展小趣事

随着业务规模的扩大,Filtran Ltd意识到供应链管理的重要性。公司开始在全球范围内寻找优质原材料供应商,并在亚洲和欧洲建立了生产基地,以降低成本并缩短交货周期。同时,通过引入先进的ERP系统和数字化管理工具,实现了供应链的高效协同。这一战略调整不仅提高了生产效率,还增强了公司对市场变化的快速响应能力。

极海半导体(Geehy)公司的发展小趣事

面对日益严峻的环保压力,Filtran Ltd积极响应可持续发展号召,将环保理念融入产品设计中。公司研发出了一系列绿色滤波器产品,采用可回收材料制造,并在生产过程中减少能源消耗和废弃物排放。这些环保产品不仅满足了市场对高性能滤波器的需求,还赢得了客户的广泛赞誉和信任。Filtran Ltd因此成为了电子行业环保实践的典范。

Crowd_Supply__Inc.公司的发展小趣事

与众不同的是,Crowd Supply Inc.采用了一种基于众包和预售的产品研发策略。他们在平台上发布项目概念和初步设计,通过社区的力量进行方案优化和功能迭代。这种模式不仅降低了产品开发成本,还使得产品更贴近用户需求。其中一款基于该策略开发的产品——一款高集成度的开源硬件开发板,在预售阶段就获得了大量订单,为公司带来了可观的收入。

粤翔(FlyWin)公司的发展小趣事
如电压比较器(如LM393),用于实时监测系统电压。
C-MEDIA公司的发展小趣事

随着公司业务的不断扩展,C-MEDIA开始实施全球化战略,积极寻求与国际知名企业的合作。通过与全球领先的电子企业、内容提供商和媒体平台建立战略合作关系,C-MEDIA成功地将自己的技术和产品推向了更广阔的市场。这些合作不仅提升了公司的品牌知名度和市场份额,也为公司的长期发展奠定了坚实的基础。

以上只是C-MEDIA公司在电子行业中的一些重要发展节点和故事的概括性描述。实际上,公司的发展过程中还涉及到许多其他的细节和因素,包括市场竞争、技术创新、人才引进等等。这些故事共同构成了C-MEDIA在电子行业中的发展轨迹,展示了其不断进取、追求卓越的精神风貌。

辉芒微(FMD)公司的发展小趣事

辉芒微(FMD)成立于2005年6月,作为一家新兴的芯片设计企业,其成立之初便专注于EEPROM(电可擦除可编程只读存储芯片)的研发与生产。在成立的同一年,辉芒微便成功实现了EEPROM芯片的量产销售,这一里程碑式的成就为公司后续的快速发展奠定了坚实的基础。随着技术的不断积累和市场的持续拓展,辉芒微在集成电路设计领域逐渐崭露头角。

问答坊 | AI 解惑

如何更改头像

个人头像更改目前步骤: 个人设置(类似操作均可)->上传头像->点击下方说明图片里的“选择图片”(如图红圈内容)->选择合适大小->预览头像->确定 …

查看全部问答>

按键处理与按键防抖动例子

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 /***************************************************** 本程序的目标是这样的: 1:不使用INTn中断功能,按键接在普通IO上 2:由定时器T/C2每隔一段时间检测按键一次, 并具有防抖动功能 3:每点击按 ...…

查看全部问答>

电工测量与电测仪表--很基础很实用的好书

电工测量与电测仪表--很基础很实用的好书 序言 前言 第一章 电测技术基础 第一节 测量的定义和分类 第二节 测量误差 第三节 电测仪表的分类 第三节 电测仪表的主要技术指标 第二章 电气测量指示仪表 第一节 电气测量指示仪表的概念和分 ...…

查看全部问答>

编译告警中英文对照分享

1.Found clock-sensitive change during activeclockedge at time <time> on register \"<name>\"原因:vector sourcefile中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化 ...…

查看全部问答>

有哪位仁兄开发过笔记本快捷键驱动

能否把原理说一下,另外快捷键调节亮度跟显卡驱动还有BIOS有关系是么?…

查看全部问答>

电压比较器问题~~~~~~~~~~~~~~~~~~

为什么在MULTISIM10中,单独做个电压比较器可以出来结果,加的信号源是系统的函数发生器(输入10V,1KHz,正弦波)~~~~~但为什么连到我们自己做的信号源(示波器显示也是10V,1KHz,正弦波)上就出来结果不对呢?…

查看全部问答>

DVR的朋友进来看看

对于DVR有哪些方案啊?了解的朋友提提哈。具体用是哪个芯片 现在我所知道的 主要是  TI的 DM6446  海思的351x系列 还有台湾的智原818x系列。 从事过DVR开发的朋友,还有其他的方案吗?谢谢啊~~~~…

查看全部问答>

关于LCD显示问题的求助

我的平台是PXA270+Wince5.0 现在LCD的显示比较奇怪,刚进入系统的时候,主画面的显示还算正常,但是一切换画面,屏幕就会局部或者部分发白。 比方说,打开IE,屏幕就会整个发白,字体看不太清楚。 打开控制面板,屏幕会变成一条一条的,什么字都 ...…

查看全部问答>

用1602LCD碰到的奇怪问题(难)

我用AT89S52与1602LCD相连,P1口与LCD的D0-D7相连,编写了一个程序,但LCD上显示的如果是数字,那只能显示偶数,如果是字母,那只能是b,d,f...我应该是D0脚有问题,每次这里测电平都是低电平,这跟前面的电路没有关系把?因为我是直接把P1.0和D1相 ...…

查看全部问答>

关于FPGA设计资源整和积累问题

各位FPGA论坛的大虾:        为了方便大虾和后来者使用,学习和共享. 我呼吁大家把已经经过验证的FPGA 模块 整理成册, 分享到论坛给使用!             &n ...…

查看全部问答>