IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 学习和理解STM32F103系列芯片的地址映射和寄存器映射原理;了解GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)。 -> 正文阅读

[嵌入式]学习和理解STM32F103系列芯片的地址映射和寄存器映射原理;了解GPIO端口的初始化设置三步骤(时钟配置、输入输出模式设置、最大速率设置)。

??

目录

一:什么是寄存器

1.

2.

二.程序设计思路

1.GPIO模式

2.存储器空间

3.存储器映射

4.寄存器操作

三、GPIO寄存器

?STM32 GPIO口的工作模式:

四、总结:


???????

???????

???????

一:什么是寄存器

1.

官方解释在百度百科上有https://baike.baidu.com/item/寄存器/187682

2.

如果把被储存的东西比作能量:

1. 寄存器就是 ATP,可以随时拿来用,性能高,但数量有限;

2. 内存就是葡萄糖,性能一般,但是存量可以比较多;

3. 外存(比如硬盘)就是脂肪,容量可以非常大,性能很差,要先转化为葡萄糖(存进内存),然后转化为 ATP(放到寄存器)才能直接利用(存取)。

二.程序设计思路

可以想象出,GPIO与时钟相关的寄存器都是很常用的寄存器,如果每一次操作这些IO口都需要看数据手册的话,太累,所以人家做芯片的把常用的寄存器对应的地址都设置好了,并放到一个头文件内,就是<stm32f10x.h>,修改main.c的代码,包含stm32f10x.h头文件。

1.GPIO模式

本次实验采用GPIOA、GPIOB、GPIOC三个端口。该三个端口都属于APB2总线

2.存储器空间

Cortex‐M3 支持4GB 存储空间。整块4G存储器开始地址标为0x0000_0000,结束地址为0xFFFF_FFFF,地址的位数是32位,那么2^32=4,294,967,296。

由于一个基本的存储单元是8bits即1Byte(每个地址对应一个存储单元,这样如果只是访问某一bit就要使用位操作,或者使用位带操作),因此4,294,967,296/1024=4,194,304KB,4,194,304/1024=4096MB,4094/1024=4GB。

3.存储器映射

这4GB的存储空间被划分成8个块,每一块用来与特定功能完成映射。映射关系如图所示。

(个人理解:这4GB的空间指的是地址空间,每个地址对应一个具体的设备。CPU并不知道每个设备是什么,它所关心的只有地址,获取相应的地址,然后找到地址对应的存储单元或者寄存器,进行读取或者写入数据即可。4GB是它最大支持的地址数目,但是实际可能没有使用那么多。

每个寄存器都是32bit,占用4个Byte即4个存储单元。可以把寄存器看作一个特殊的单元,一个这样的单元占32bit,只要找到这个单元的起始地址就可以对其进行操作。

其映射地址 = 外设总基地址(块基地址)+ 总线相对于外设总基地址的偏移 + 具体外设基地址相对于总线基地址的偏移 + 寄存器相对于具体外设基地址的偏移。

4.寄存器操作

直接地址操作访问

以GPIOE_ODR寄存器为例:

查芯片手册知:ODR寄存器地址相对于GPIOE起始地址的偏移为:0Ch

因此:

GPIOE_ODR = GPIOE_BASE+0x0C

GPIOE_BASE = APB2PERIPH_BASE + 0x1800

APB2PERIPH_BASE = PERIPH_BASE + 0x10000

PERIPH_BASE = 0x40000000

所以:

GPIOE_ODR = 0x4001180C(寄存器的起始地址)
?

三、GPIO寄存器

32位配置寄存器:GPIOx_CRL
32位配置寄存器:GPIOx_CRH
32位数据寄存器:GPIOx_IDR
32位数据寄存器:GPIOx_ODR
32位置位/复位寄存器:GPIOx_BSRR
16位复位寄存器:GPIOx_BRR
32位锁定寄存器:GPIOx_LCKR


?STM32 GPIO口的工作模式:

输入浮空
输入上拉
输入下拉
模拟输入
开漏输出
推挽式输出
推挽式复用功能
开漏复用功能
每个I/O端口位可以自由编程,而I/O端口寄存器必须按32位字被访问,不允许半字或字节访问。
GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问,这样,在读和更改访问之间产生IRQ时不会发生危险。
?

四、总结:

????????对STM32F103系列芯片的地址映射和寄存器映射原理和GPIO解释如上。参考博客:
STM32从地址到寄存器_geekYatao-CSDN博客_stm32寄存器地址https://blog.csdn.net/geek_monkey/article/details/86291377

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:22:05  更:2021-10-26 12:23:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:22:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码