stm32库编程

 

一、寄存器编程 —— 点亮一个LED

1、寄存器是软件编程控制硬件的关键

1.1 什么是寄存器?

通用寄存器(类似于C语言中定义的变量):

一般在设计MCU内核中,具体功能没有确定,ARM中含有21个,是内核的组成部分,CPU的很多活动都需通用寄存器的支持和参与,每个bit没有确定的特殊含义,编程人员读写修改来确定。通用寄存器通过用自己的名来访问。

特殊功能寄存器(special function register)SFR:

特殊功能寄存器是核内/片上外设的组成部分,也就是不在CPU中,在外设中。我们通过访问外设的SFR来编程操控这个外部设备。这就是编程控制的方法。

SFR特殊理解为两方面:

不是通用的,是专门给某个外部设备定制的,和某个外部设备绑定的,每个/一组bit位设计死了外设的某种确定功能,不能编程改变;

通过软件 读/写 SFR中某几位可以实现外设的特定功能;

特殊功能寄存器是芯片设计者制定的,目的是留作外设被编程控制的“活动开关”后台操作。

正如汇编指令是CPU的编程接口API一样,寄存器是外设硬件的软件编程接口API。

使用软件编程控制某一硬件其实就是编程读写该硬件的寄存器。程序(自己写的代码)能够操控硬件主要是操作寄存器。寄存器中每个bit位都有特定含义,因此编程操作需要对应数据手册用位操作来实现。

单个寄存器位宽(一个寄存器能够设置的位数)一般和处理器内核的位宽一样,以实现最佳访问效率。对ARM内核来说,其寄存器是32位的,总线是32位的,存储器接口也是32位的。

1.2 如何访问寄存器?

对于采用ARM的Cortex架构的STM32来说,因为其IO与内存统一编址,只需查询到要访问的寄存器在内存控制中的地址,CPU就可以像访问内存一样访问寄存器。(与之对应8086/8088)

STM32的地址总线是32位的,内存空间总共为4G,被划分为8个区域,片上外设的寄存器区域在0x40000000-0x60000000区域;内核私有外设的寄存器与在0xE000 0000 - 0xE010 0000;

一个寄存器的地址是多少,某个地址属于那个外部设备,作用是什么?要查看硬件数据手册/编程参考手册

一般通过 基地址 + 偏移 的方式间接寻址

 

 

1.3 寄存器位的种类

寄存器位按其功能可分为三类:

1&#

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值