STM32编程通常有两种方法:一种是寄存器编程;另外一种是固件库编程,其中寄存器编程是基础,而固件库编程是在寄存器编程的基础上升级而来的一种易于学习和开发的编程方法,是学习STM32编程时重点要掌握的编程方法。
1、STM32芯片外观
芯片正面是丝印,ARM应该是表示该芯片使用的是ARM的内核,STM32F103VET6是芯片型号,后面的字与生产批次有关,左下角的是ST的LOGO。
芯片四周是引脚,左下角的小圆点表示引脚1,然后从引脚1起按照逆时针的顺序排列(所有芯片的引脚顺序都是逆时针排列的),见图1-1 开发板中把芯片的引脚引出来,连接到各种传感器上,然后在STM32上编程(实际就是通过程序控制这些引脚输出高电平或者低电平)来控制各种传感器工作,通过做实验的方式来学习STM32芯片的各个资源。
开发板是一种评估板,板载资源非常丰富,引脚复用比较多,力求在一个板子上验证芯片的全部功能。

图1-1 STM32F103VET6正面引脚图
2 芯片里面有什么
我们看到的STM32芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设的关系就如同电脑上的CPU与主板、内存、显卡、硬盘的关系。
STM32F103采用的是Cortex-M3内核,内核即CPU,由ARM公司设计。ARM公司并不生产芯片,而是出售其芯片技术授权。
芯片生产厂商(SOC)如ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片。这些内核之外的部件被称为核外外设或片上外设,如GPIO、USART(串口)、I2C、SPI等都叫作片上外设,具体见图1-2。

图1-2 STM32芯片架构简图
芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有4个,被动单元也有4个,具体见图1-3。为了方便理解,可以把驱动单元理解成CPU部分,而把被动单元理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件。

图1-3 STM32F10xx系统框图(不包括互联型)
1.ICode总线
ICode中的I表示Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在Flash中,内核要读取这些指令来执行程序就必须通过ICode总线,它几乎每时每刻都需要被使用,是专门用来取指的。
2.驱动单元
(1)DCode总线
DCode中的D表示Data,即数据,说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,在C语言中用const关键字修饰,是放到内部的Flash当中的;变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM中。因为数据可以被DCode总线和DMA总线访问,为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线取数。
(2)System总线
System(系统)总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的。
(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的重点,就是要学会编程这些外设去驱动外部的各种设备。
3 存储器映射
在图5-4中,被动单元Flash、RAM、FSMC和AHB到APB的桥(片上外设)这些功能部件共同排列在一个4GB的地址空间内。我们在编程的时候,可以通过它们的地址找到它们,进而操作它们(通过C语言对它们进行数据的读和写)。
存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,具体见图1-4。如果给存储器再分配一个地址就叫存储器重映射。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



