【STM32】学习笔记 |
您所在的位置:网站首页 › 怎么删蓝牙连接记录 › 【STM32】学习笔记 |
欢迎来到矽芯硬翌的科技主义教室!
Ps:记录STM32入土路上的艰苦旅程,加油UPUPUP! 文章目录 欢迎来到矽芯硬翌的科技主义教室! 前言一、寄存器是什么?二、STM32内部世界1.STM32神秘样貌1.1 芯片内有什么? 2.存储器映射2.1 存储器区域功能划分2.2 寄存器映射2.3 STM32外设地址映射 3.修改寄存器的位操作 总结 前言 已经学习过一边STM32,但没有系统的记录下来,导致很多东西都是只知道名字但不了解具体是什么原理。借用这个暑假在详细记录一下STM32的入土实况!!加油 以下是记录一些寄存器的相关知识内容,下面案例可供参考 一、寄存器是什么?学过数电、模电,汇编的同学都对寄存器这个名词不陌生,但它到底是个什么样的东西呢?先借用一下百度词条: (来自百度百科):存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
本次包括以后使用和介绍的都是芯片为:STM32F103ZET6的开发板。先看一张正面的引脚图。 平常看到的 STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的 CPU 与主板、内存、显卡、硬盘的关系。 STM32F103 采用的是 Cortex-M3 内核,内核即 CPU,由 ARM 公司设计。 ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如 ST、 TI、 Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如 GPIO、 USART(串口)、 I2C、 SPI 等都叫做片上外设。具体参照下图。
下面是整个系统框图: 被控单元的 FLASH, RAM, FSMC 和 AHB 到 APB 的桥(即片上外设),这些功能部件共同排列在一个 4GB 的地址空间内。在编程时,可以通过 C 语言对它们进行数据的读和写。 含义:芯片厂商给存储器分配地址的过程就称为存储器映射,如果给存储器再分配一个地址就叫存储器重映射。 下图为官方寄存器映射图: 在这 4GB 的地址空间中, ARM 已经平均分成了 8 个块,每块 512MB,每个块也都规定了用途。 下图为存储器功能分类图: 在这8 个 Block 里面,最关心的有三块:Block0、Block1、Block2。 Block0 用来设计成内部 FLASH, Block1 用来设计成内部 RAM, Block2 用来设计成片上的外设。 存储器 Block0 内部区域功能划分![]() ![]() ![]() 最开始的时候有一个问题,什么是寄存器?现在可以给出一个很好的解答,在存储器Block2这块区域设计上是片上外设,这其中有很多地址单元,这些地址单元可以通过C语言指针的方式来访问。但是这些地址单元比较复杂难记,使用时也比较容易出现错误,为了方便记忆给这些地址单元取一个名称,这个名称就是所谓的寄存器。比如GOPIX端口的输出数据寄存器的地址为0X40010C0C,给这个寄存器起的名称就为ODR,之后见到的多数这样的名称就可以很好的理解为是一个寄存器,而不被为一大堆的英文吓跑。 之前已经解释过映射的含义,那什么是寄存器映射呢?给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。 以下是一个映射过程: // GPIOB 端口全部输出 高电平 2 #define GPIOB_ODR *(unsigned int*)(GPIOB_BASE+0x0C) 3 GPIOB_ODR = 0xFF; //代码不过多解释 2.3 STM32外设地址映射APB1总线的地址最低,也叫做外设基地址 C语言的位操作: 1.变量某位赋值与连续赋值:寄存器 |= 值 //例如:a = 1000 0011b a |= (1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |