寄存器映射原理详解,GPIO端口的初始化设置步骤

目录

一.STM32F103系列芯片的地址映射和寄存器映射原理

1.寄存器介绍

​编辑2.地址映射和寄存器映射原理

二.GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)

1.单片机的时钟

2.GPIO 介绍

3.GPIO模式

4.输入和输出模式

5.使用GPIO初始化步骤

6.实列

一.STM32F103系列芯片的地址映射和寄存器映射原理

1.寄存器介绍

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。

现代的计算机主要包括三级存储,寄存器、内存储器和外存储器,存储数据的速率也依次递减。

我们不妨将寄存器和内存储器都抽象成一个大的数组,其中的每个元素都有一个字节(8位)大小,CPU寻址的时候就是以该元素为最小单位完成的。如前一个元素的地址是0x1FFFFFF0的话,那么下一个元素的地址就是0x1FFFFFF1。我们可以理解为硬件构成上寄存器和内存储器也都是由一个8位大小的元器件线性排列组成的,地址对应着上面讲到的数组中元素的地址。

 寄存器是 CPU 内部的构造,它主要用于信息的存储

2.地址映射和寄存器映射原理

我们知道,存储器本身没有地址,给存储器分配地址的过程叫存储器映射

存储器在产家制作完成后是一片没有任何信息的物理存储器,而CPU要进行访存就涉及到内存地址的概念,因此存储器映射就是为物理内存按一定编码规则分配地址的行为。值得注意,存储器映射一般是由产家规定,用户不能随意更改。

寄存器映射是在存储器映射的基础上进行的。

以STM32为例,操作硬件本质上就是操作寄存器。在存储器片上外设区域,四字节为一个单元,每个单元对应不同的功能。当我们控制这些单元时就可以驱动外设工作,我们可以找到每个单元的起始地址,然后通过C 语言指针的操作方式来访问这些单元。但若每次都是通过这种方式访问地址,不好记忆且易出错。这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名实质上就是寄存器名字。给已分配好地址(通过存储器映射实现)的有特定功能的内存单元取别名的过程就叫寄存器映射。

二.GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)

1.单片机的时钟

时钟:stm32的时钟是由内部或外部振荡器产生的“频率”,而被人们形象的称为“系统时钟”。最大为72MHz换成周期T为:1/72MHz≈13.9ns。

使用时钟的原因:

因为耗电量,stm32功能强大,能做很多事,但与之同时带来的消耗也越严重,当stm32不引入时钟的话,就像51一样外设全开,相应耗电就很严重了,所以厂家(st公司)为了解决这个问题,引入了“时钟概念”,即使用哪个外设就给哪个外设时钟(频率),不使用的就关掉(不震荡)。此做法大大降低了功耗,续航持久。在51单片机中一个时钟把所有的都包了,而stm32的时钟是有分工的,并且每类时钟的频率不一样,因为没必要所有的时钟都是最高频率,只要够用就行,好比一个门出来水流大小,如果只要洗脸,但是出来的是和洪水一样涌出来的水,那就没必要了,消耗能源也多,所以不同的时钟也会有频率差别,或者在配置的时候可以配置时钟分频。
 

2.GPIO 介绍

意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。

STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚。

最基本的输出功能是由 STM32 控制引脚输出高、低电平,实现开关控制,如把 GPIO引脚接入到 LED灯,那就可以控制 LED灯的亮灭,引脚接入到继电器或三极管,那就可以通过继电器或三极管控制外部大功率电路的通断。

最基本的输入功能是检测外部输入电平,如把 GPIO 引脚连接到按键,通过电平高低
区分按键是否被按下。

3.GPIO模式

GPIO工作模式主要八种,四种输入,四种输出

输入方式:输入浮空,输入上拉,输入下拉,模拟输入

输出方式:开漏输出,开漏复用输出,推挽输出,推挽复用输出

 

4.输入和输出模式

输入模式

浮空输入模式   : 浮空输入状态下,IO 的电平状态是不确定的,完全由外部输入决定,如果在该

引脚悬空的情况下,读取该端口的电平是不确定的。可做KEY按键识别。
上、下拉输入模式   : 内部设有上拉和下拉电阻,当外部电路为低电平,IO口设为下拉模式,当外部电路为低电平,IO口设为上拉模式。

模拟输入    :用作内部ADC输入或DAC输出,预防干扰。

输出模式

推挽输出模式:推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制,两个管子时钟一个在导通,一个在截止;推挽输出的最大特点是可以真正能真正的输出高电平和低电平,在两种电平下都具有驱动能力。

开漏输出模式:无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。

推挽、开漏复用模式:当GPIO口被用作第二功能时,需要配置,端口重映射AFIO

5.使用GPIO初始化步骤

第一步:使能GPIOx口的时钟
第二步:指明GPIOx口的哪一位,这一位的速度大小以及模式
第三步:调用GPIOx初始化函数进行初始化
第四步:调用GPIO-SetBits函数,进行相应位的置位

6.实列

对单个:

对多个:

 

7.总结:GPIO初始化需要通过时钟配置、输入输出模式设置、最大速率设置三个步骤来实现。


 


 

GPIO输入模式的初始化包括以下几个步骤: 1. 首先需要设置GPIO引脚的模式,将其配置为输入模式。这可以通过寄存器来完成,在STM32中,可以使用GPIOx_MODER寄存器设置引脚模式,将相应引脚的MODER位设置为00,表示输入模式。 2. 接下来,需要配置GPIO引脚的输入类型。可以选择推挽模式或开漏模式。推挽模式可以通过设置GPIOx_OTYPER寄存器的OT位来实现,将其设置为0,表示推挽输出。开漏模式可以通过设置GPIOx_OTYPER寄存器的OT位来实现,将其设置为1,表示开漏输出。 3. 然后,需要配置GPIO引脚的上拉或下拉电阻。可以选择使用内部上拉或下拉电阻,也可以选择外部上拉或下拉电阻。在STM32中,可以使用GPIOx_PUPDR寄存器设置上拉或下拉电阻,将相应引脚的PUPDR位设置为01,表示使用上拉电阻,设置为10,表示使用下拉电阻。 4. 最后,可以编写相应的测试程序来检测按键的状态。可以使用GPIOx_IDR寄存器来读取引脚的输入状态,通过判断引脚的输入状态来实现按键控制其他功能,比如控制LED灯。 总结起来,GPIO输入模式的初始化包括设置引脚模式、配置输入类型、设置上拉或下拉电阻以及编写相应的程序来检测引脚的输入状态。这些步骤可以根据具体的需求和硬件平台进行配置和实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [寄存器映射原理详解GPIO端口初始化设置步骤](https://blog.csdn.net/weixin_59156930/article/details/127301730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【STM32学习记录2】——GPIO输入—按键检测.zip](https://download.csdn.net/download/qq_43328313/12150566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值