STM32学习笔记二:什么是寄存器

发布者:532829319hmk最新更新时间:2017-11-06 来源: eefocus关键字:STM32  寄存器 手机看文章 扫描二维码
随时随地手机看文章

芯片架构简图

芯片(这里指内核,或者叫 CPU)和外设之间通过各种总线连接,其中驱动单元有 4个,被动单元也有 4 个。为了方便理解,我们都可以把驱动单元理解成是CPU 部分,被动单元都理解成外设。

系统框图

1、ICode总线:ICode 中的 I 表示 Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在 FLASH 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。

2、驱动单元:

(1)DCode 总线:DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用 C 语言中的 const 关键字修饰,是放到内部的 FLASH 当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

(2)系统总线:系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的。

(3)DMA总线:DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的 FLASH。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

3、被动单元:

(1)内部的闪存存储器:内部的闪存存储器即 FLASH,我们编写好的程序就放在这个地方。内核通过 ICode 总线来取里面的指令。

(2)内部的SRAM:内部的 SRAM,即我们通常说的 RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过 DCode总线来访问它。

(3)FSMC:FSMC 的英文全称是 Flexible static memory controller,叫灵活的静态的存储器控制器,是 STM32F10xx 中一个很有特色的外设,通过 FSMC,我们可以扩展内存,如外部的SRAM,NANDFLASH 和 NORFLASH。但有一点我们要注意的是,FSMC 只能扩展静态的内存,即名称里面的 S:static,不能是动态的内存,比如 SDRAM就不能扩展。

(4)AHB到APB的桥:从 AHB 总线延伸出来的两条 APB2 和 APB1 总线,上面挂载着 STM32 各种各样的特色外设。我们经常说的 GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上,这个是我们学习 STM32的重点,就是要学会编程这些外设去驱动外部的各种设备。


存储器映射:

1存储器功能分类

Block0:Block0 主要用于设计片内的 FLASH,我们使用的 STM32F103ZET6(霸道)和STM32F103VET6(指南者)的 FLASH 都是 512KB,属于大容量。要在芯片内部集成更大的 FLASH 或者 SRAM 都意味着芯片成本的增加,往往片内集成的 FLASH 都不会太大,ST 能在追求性价比的同时做到 512KB,实乃良心之举。

Block1:Block1 用 于 设 计 片 内 的 SRAM 。 我 们 使 用 的 STM32F103ZET6 ( 霸 道 ) 和STM32F103VET6(指南者)的 SRAM 都是 64KB。

Block2:Block2用于设计片内的外设,根据外设的总线速度不同,Block 被分成了 APB和 AHB两部分,其中 APB 又被分为 APB1和 APB2。

 

什么是寄存器:

给有特定功能的内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。

什么叫存储器映射:

给存储器分配地址的过程叫存储器映射,再分配一个地址叫重映射。


使用结构体指针访问寄存器:


关键字:STM32  寄存器 引用地址:STM32学习笔记二:什么是寄存器

上一篇:STM32学习笔记二:什么是寄存器
下一篇:STM32学习笔记之内存结构

推荐阅读最新更新时间:2024-03-16 15:43

基于STM32的队列与栈
使用ESP8266接收云端传输数据,云端下发数据可能为好几组数据同时下发,而下位机处理只能单个依次进行,因此需要建立一个缓冲数组,接收云端数据,然后一个个依次处理-- 队列。 队列: 顺序队列:建立顺序队列结构必须为其静态分配或动态申请一片连续的存储空间,并设置两个指针进行管理。一个是队头指针front,它指向队头元素;另一个是队尾指针rear,它指向下一个入队元素的存储位置 数据结构之顺序队列(C实现) 循环队列: 基于stm32串口环形缓冲队列处理机制—入门级(单字节) 栈: https://jingyan.baidu.com/article/6c67b1d6a09f9a2786bb1e4a.html 这里
[单片机]
基于<font color='red'>STM32</font>的队列与栈
stm32---ADC
adc.c #include adc.h void ADCx_Init() { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; //1*时钟开启并配置ADC分频系数 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div6);//6分频,72/6=12Mhz,函数在rcc.h中 //2*GPIO配置 GPIO_InitStructur
[单片机]
基于IAP的STM32程序更新技术
引言 嵌入式系统的开发最终需要将编译好的代码下载到具体的微控制器芯片上,而不同厂家的微控制器芯片有不同的下载方式。随着技术的发展和应用需求的更新,用户程序加载趋向于在线编程的方式,越来越多的芯片公司提供和开放了用户更新程序的接口与方式,以提高整个系统的可靠性和可维护性。ST公司基于CortexM3内核的STM32系列产品得到了广泛应用,在许多基于STM32系列产品的开发过程中不可避免要进行用户程序的加载。本文在介绍IAP技术原理基础上,详细论述使用该技术在STM32F103ZE芯片上实现用户在线更新功能的方法,并具体分析其中可能发生异常的原因。 1 背景综述 1.1 主要程序更新方式 目前,除了直接通过仿真器或烧录器进行程
[单片机]
基于IAP的<font color='red'>STM32</font>程序更新技术
STM32学习笔记:通用定时器基本设定
STM32 包含11个定时器,其中TIM2~TIM5为通用定时器。 通用定时器挂载在低速外设总线APB1上,其时钟来源于输入为APB1的一个倍频器,只要APB1的时钟分频数不为1,TIMx的时钟频率就会为APB1时钟频率的2倍,即72MHz 。 配置通用定时器需要4步(以配置TIM2为例): (1)配置系统时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);倍 开启TIM2与GPIOA的时钟,其中TIM2挂载在APB1上,GPIOA挂载在APB2上;
[单片机]
单片机STM32时钟详解
众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。 其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号. 高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz,我们一般采用
[单片机]
单片机<font color='red'>STM32</font>时钟详解
我感觉有必要把整个STM32内存包括寄存器的分配弄清楚
《跟工程师学嵌入式开发》这本书有讲。
[单片机]
我感觉有必要把整个<font color='red'>STM32</font>内存包括<font color='red'>寄存器</font>的分配弄清楚
STM32移植UCGUI实现GPS
在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!) 移植步骤: 第一步:首先,得把你的TFT底层驱动写好,既在裸机下,可以正常显示。 第二步:加入UCGUI程序包。 第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。) 配置LCDConf.h文件如下: #ifndef LCDCONF_H #define LCDCONF_H #define LCD_XSIZE (160) //配置T
[单片机]
<font color='red'>STM32</font>移植UCGUI实现GPS
Cygnal在片系统单片机的特点与应用
1引言   Cygnal C8051F系列是全集成混合信号在片系统单片机。 在片系统随着半导体生产技术的不断发展,集成度越来越高,对嵌入式控制技术可靠性要求也越来越高而产生的新概念,即 SOC(System on chip),意思是整个系统都高度集成在一个 芯片上。本文通过使用 Cygnal C8051F000制作一个智能故障分析报警仪,介绍Cygnal C8051Fxxx系列全集成混合信号在片系统单片机的特点,及其在智能仪器中的一般使用方法,和一 些需要注意的问题。   故障分析报警仪的原理:从 4个不同点采集电压和电流数据,综合分析,得出故障的原因 和位置,相应地提供报警、显示和电路切除。 2C8051F00
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved