嵌入式stm32F103入门篇(2)-寄存器映射和寄存器

 一、STM32F103实物芯片解析

图1

        如图1所示,就是开发板上的100pin引脚的STM32F103芯片了。上一篇文章以及介绍到了芯片内核Cotres-M是ARM公司生产的,ST公司不参与设计,而ST公司的责任就是再内核的基础上搭载片上外设,如常见的GPIO等。

        图2,已经把ARM公司和ST公司的职责介绍的很详细了,简单来说ARM只设计内核,而ST公司设计芯片片上外设,两者构成了成品的STM32芯片。

图2

二、寄存器存储器基本知识

        存储器和寄存器都是大学本科《数字电子技术》的内容。数电是对数字信号处理,模电则是对模拟信号处理。何为数字信号?为了方便初学者理解我们做出一下解释:

        1、数字信号:只有0和1两种状态,客观认为两种状态是瞬态转换的。如:方波。

         2、模拟信号:是一个连贯的信号,可以拿中学数学中的函数想象,如:正弦函数 

                             ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​ Y = Sin(x)

        数电的发展历程大致如下:

P型/N型半导体——二极管/三极管/场效应管——逻辑门电路——组合逻辑电路

P型/N型半导体——二极管/三极管/场效应管——逻辑门电路——RS触发器——时序逻辑电路

        而存储器和寄存器都是属于时序逻辑电路中的一类,两者其实区别不大,都拥有记忆功能我们如何区分组合逻辑电路和时序逻辑电路呢?就看是否有记忆元件——RS触发器的存在。含义记忆元件就是时序逻辑电路。当然了,想要具体了解还是要学数电内容。

        什么是存储器、寄存器?

        1、存储器:用于大规模的数据存储,可以存储大量的信息,支持随机访问,主要包括各种内存类型。

        2、寄存器:用于CPU内部的高速数据存储和操作,存储容量较小,但访问速度极快,是计算机中关键的存储组件。

        总结:都是用来存放二进制数据的,但是简单来说就是存储容量的区别,你可以想象一部1TB手机和一部64GB手机的区别,两者最主要其实只有存储容量的区别(忽略访问速度等条件)。

三、寄存器映射

        如果你学过《高等数学》,那么高数第一章叫做映射与函数,函数就是属于映射的一种类型存储器本身并不具有地址信息它的地址是由芯片厂商或用户人为去分配,给存储器分配地址的过程就称为存储器映射。如果给存储器再分配一个地址就叫存储器重映射。可以简单理解给一个存储器取了一个别名,我们工程上习惯称之为“地址”,通常用0X开头的十六进制数字去表示它再计算机当中的地址,只有有了地址才方便去寻找到相关的寄存器/存储器,这可以简单理解位“寻址”。

图3 

我们实际用C语言编程都是对寄存器编程,这是因为存储器是一个很大的操作空间,如果直接对它操作,肯定没有效果,要具体落实到它地下的block块。在一个4GB的内存中,平均分成了8个块,而每一个块有512MB.

图4

        具体不明白各个存储器block的用途也没有关系,我们可以看到,每一个存储器block出厂的时候都有他们的用途,并且都有相对应的地址,这个地址非常重要,后面进行寄存器映射的时候就要对他们进行“基地址偏移”。通俗的话来说就是每个block块的范围里其实还分为许多外设寄存器,我们要对外设寄存器赋值操作,就要先寄存器偏移然后再操作。

        总结:寄存器就是属于各个存储器block中的外设了,列如存储器Block2上有三根总线——APB1、APB2、AHB。而APB1总线和APB2总线上搭载了列如ODR寄存器等,我们要取ODR寄存器的地址,就是先要基地址偏移这一步来完成相对应的寄存器映射的操作。也就是说,我们需要哪些相应功能的寄存器,只要完成寄存器映射的功能即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值