当前位置:首页 > 技术学院 > 技术前线
[导读]STM32 (1) 之 什么是寄存器?

什么是储存器映射?

什么是寄存器映射?

芯片辨别

1怎么看芯片丝印

缺口正方向()

正看丝印左边第一个脚为一脚

写程序最终是操作寄存器,这里参考零死角玩转 STM32 第六章什么是寄存器章节


stm32什么是寄存器

外设:GPIO USART 12C SPI 等 Cortex-M3内核是主控器

soc厂商 苹果 三星 ST

在 存储器和总线架构这里


stm32什么是寄存器

体现了内核外设的连接

我们写好的程序是由单片机来执行的,执行的时候是由内核来取这些指令的,程序我们放在FLASH里,但是内核要读取程序,要通过ICode总线读取 I (lnstruction指令)


stm32什么是寄存器

2。DCode


stm32什么是寄存器

const 常量是存放在flash里面的

变量是放在内部的SRAM当中的 要读取的时候是通过DCode这条总线去读取的

在驱动单元中还有另外一部分: DMA他也是可以读取数据的, DMA和DCode有时会同时读取,那么就会产生冲突,这时就需要总线矩阵来总裁,判断到底由哪条总线来读取数据

3 System 系统总线

主要用来读取寄存器 内核要想操作某个外设,必须要通过操作寄存器来实现,读取的时候也就是通过这个System总线 来读取 而寄存器存在于外设当中

4 DMA 主要用来搬数据

比如:cpu要读取一个变量,该变量在 sram里面,将变量存到串口的数据寄存器(DR),如果不使用DMA,cpu要先通过DCode将变量独到CPU当中,然后再把变量存到 串口的数据寄存器,但是,如果你使用了DMA ,那么CPU只需要发一个命令,DMA就可以直接 将变量存到串口的数据寄存器 CPU就可以空闲出来,可以做其他事情

AHB 总线到APB 总线

AHB挂在了两个外设 1复位和时钟控制(RCC) 2. SDIO

AHB通过桥接 分成了 APB1 和 APB2

APB2 是高速总线 里面的外设如上图所示

APB1 是低速总线

FSMC 是用来驱动外存的 驱动液晶的时候会讲,我们重点要学的是 APB1和 APB2上的外设

接下来看英文板 STM32 英文版 《数据手册》memory mapping章节我们编程时所操作的寄存器只包括下图这部分,


stm32什么是寄存器

我们可以从memory mapping 中发现ARM是32位的2的32 次方 有4GB 被分成了8个块(每一块有512M)

第0块 放FLASH(block0) ST只用了512kb

第1块 放SRAM ST 只用了64kb

第2块 (block3)放外设(Peripherals)

第3.4块 (block4 5)都是FSMC 的寄存器 block6没有用

block7 放Cortex-m3 的寄存器

我们重点要学习的是block2 里面的 外设,我们所说的所有的 寄存器都在block2里面

什么是存储器映射?


stm32什么是寄存器

ST给一块内存编好地址,叫存储器映射,然后我们可以根据这些地址去访问这些内存,上表就是存储器功能分类,这个表其实对应的就是memory mapping

接下来就可以进行编程了


stm32什么是寄存器

这个操作和51很类似

51中头文件 reg52.h 做了寄存器映射如下图


stm32什么是寄存器

STM32如何实现 GPIOB全部输出高电平?

打开STM32 中文参考手册 找到GPIO的寄存器 ODR寄存器(端口数据寄存器)只用到了低16位,每一个位对应端口的一个IO

如果想要GPIOB的所有端口都输出高电平 那么将寄存器的16位都写1就行了,知道要操作哪个寄存器以后我们要在memory mapping看GPIOB对应的地址


stm32什么是寄存器

上图也可以在《STM32中文参考手册》当中存储器和总线架构当中找到

0x40010c00 起始地址

0x40010FFF 结束地址


stm32什么是寄存器

地址偏移

是相对于端口的基地址的偏移 那么这个寄存器的地址就是

端口的基地址+地址偏移=0x40010c00+0x0c

上面这个就是 GPIOB端口的ODR寄存器的地址

上面的*(unsigned int*)(0x40010C0C)意思是:将0x40010C0C这个地址强制转化位 无符号指针类型再将0xFFFF赋值给0x40010C0C。

还有另外一种方法;

通过define 将0x40010C0C定义成一个宏 再通过宏来操作


stm32什么是寄存器


stm32什么是寄存器

总结:我们在编程的时候都是在操作寄存器, 这些寄存器是由芯片厂商在一段特定的内存当中规定好的,它每一个内存单元对应一个外设,每一个内存单元对应一个字节。 32位单片机就对应了4个字节,每一个内存单元都是有特定功能的我们往这些内存单元里写数据的话就能操作这些外设


stm32什么是寄存器


stm32什么是寄存器
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭