STM32 103基础知识
来源:互联网 发布:shell编程if小括号 编辑:程序博客网 时间:2024/06/14 05:40
STM32 103学习基础知识
什么是寄存器
我们看到的 STM32 芯片已经是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU 与主板、内存、显卡、硬盘的关系。STM32F429 采用的是 Cortex-M4 内核,内核即 CPU,由 ARM 公司设计。 ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、 TI、 Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、 USART(串口)、 I2C、 SPI 等都叫做片上外设。 存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射。 如果给存储器再分配一个地址就叫存储器重映
射。
片上外设区分为四条总线,根据外设速度的不同,不同总线挂载着不同的外设, APB挂载低速外设, AHB 挂载高速外设。相应总线的最低地址我们称为该总线的基地址,总线基地址也是挂载在该总线上的首个外设的地址。其中 APB1 总线的地址最低,片上外设从这里开始,也叫外设基地址。
我们知道,存储器本身没有地址,给存储器分配地址的过程叫存储器映射,那什么叫寄存器映射?寄存器到底是什么?
在存储器 Block2 这块区域,设计的是片上外设,它们以四个字节为一个单元,共32bit,每一个单元对应不同的功能,当我们控制这些单元时就可以驱动外设工作。我们可以找到每个单元的起始地址,然后通过 C 语言指针的操作方式来访问这些单元,如果每次都是通过这种地址的方式来访问,不仅不好记忆还容易出错,这时我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。
《 STM32F4xx 参考手册》 很有参考价值,我们可以在上面找到对应寄存器的配置方式的偏移量。用自己的话总结就是:芯片厂商在设计芯片的时候,硬件确定了一片内存区域,有地址编号,我们通过这个地址,配置不同的值可以得到不同的功能,但是记忆内存地址显然不现实,所以我们人为地为各个内存区域取了一个别名,这个别名叫寄存器,只要你愿意,你可以取和ST官方不同的名字,但是最好不要这样。通过别名,也就是寄存器,我们通常说的配置寄存器,其实就是在对应地址上写入不同的值达到不同的效果。在这个取别名的过程中,需要用到指针和结构体的知识,对地址进行访问需要指针操作,而地址偏移我们可以用结构体,因为结构体中的内存是连续分配的,这正好用在这种地址偏移中。
但是,要注意,偏移并不是随便来的,很多人没有注意这个问题,这在之后的C语言随笔中将会提出,现在需要记住的是,MDK5.20,默认偏移是4个字节,这个默认偏移是有很大讲究的!!!
引用
- STM32 103基础知识
- STM32基础知识
- STM32的时钟基础知识
- STM32基础知识3-STM32串口USART1的使用方法和程序
- STM32基础知识3-STM32串口USART1的使用方法和程序
- STM32开发C语言基础知识---关键字volatile
- STM32位段和别名区基础知识
- STM32基础知识4-va_list原理及用法
- STM32学习之路-LCD驱动(1)<基础知识>
- STM32基础知识1-stm32PWM输入捕获模式详解
- STM32
- stm32
- STM32
- STM32
- STM32
- STM32
- STM32
- STM32
- Snmp学习总结(六)——linux下安装和配置SNMP
- Function Module
- DES加密
- Mybatis关联查询
- jquery的inputlimiter插件--限制文字字数
- STM32 103基础知识
- Snmp学习总结(七)——SNMP4J介绍
- java文件操作
- Java嵌入式数据库H2学习总结(一)——H2数据库入门
- AsyncTask解析、使用方法
- hbase standalone方式安装速记
- Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库
- 删除ArrayList中重复元素
- Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库