|
1.STM32 长啥样 u. [4 P# x6 Q. {+ E 芯片正面是丝印,ARM 应该是表示该芯片使用的是ARM 的内核,STM32F103VET6是芯片型号,后面的字应该是跟生产批次相关,最上面的是ST 的LOGO。芯片四周是引脚,左下角的小圆点表示1 脚,然后从1 脚起按照逆时针的顺序排列(所有芯片的引脚顺序都是逆时针排列的)。开发板中把芯片的引脚引出来,连接到各种传感器上,然后在STM32 上编程(实际就是通过程序控制这些引脚输出高电平或者低电平)来控制各种传感器工作,通过做实验的方式来学习STM32 芯片的各个资源。开发板是一种评估板,板载资源非常丰富,引脚复用比较多,力求在一个板子上验证芯片的全部功能。
( W" e# N* h* j2 C2 I- ? 2.芯片内部结构" Q- D2 W0 ]1 j 我们看到的STM32 芯片是已经封装好的成品,主要由内核和片上外设组成。若与电脑类比,内核与外设就如同电脑上的CPU 与主板、内存、显卡、硬盘的关系。8 ]: j8 k$ l" O, y2 }5 C" D _$ c4 ` 2 W( [; n* u" v- g$ P6 m0 A' ]3 `: I" Q STM32F103 采用的是Cortex-M3 内核,内核即CPU,由ARM 公司设计。ARM 公司并不生产芯片,而是出售其芯片技术授权。芯片生产厂商(SOC)如ST、TI、Freescale,负责在内核之外设计部件并生产整个芯片,这些内核之外的部件被称为核外外设或片上外设。如GPIO、USART(串口)、I2C、SPI 等都叫做片上外设。 芯片(这里指内核,或者叫CPU)和外设之间通过各种总线连接,其中驱动单元有4个,被动单元也有4 个,具体见图 6-4。为了方便理解,我们都可以把驱动单元理解成是CPU 部分,被动单元都理解成外设。下面我们简单介绍下驱动单元和被动单元的各个部件。7 L7 [8 a' I5 y8 p ICode 总线" h" }% h9 g7 v5 E0 _ n9 v8 H ICode 中的I 表示Instruction,即指令。我们写好的程序编译之后都是一条条指令,存放在FLASH中,内核要读取这些指令来执行程序就必须通过ICode 总线,它几乎每时每刻都需要被使用,它是专门用来取指的。 , I% P! Q. C& V4 W. [9 J8 V( A 3. 驱动单元7 X9 G) ]" R, W4 x. h7 R ; Y+ B: O2 G1 @5 N$ @
- ?# k% Z5 `( {7 }0 I5 v $ ], V0 L: l6 @ DCode 总线( n1 s1 c0 n6 l3 ?5 w. p: _ DCode 中的D 表示Data,即数据,那说明这条总线是用来取数的。我们在写程序的时候,数据有常量和变量两种,常量就是固定不变的,用C 语言中的const 关键字修饰,是放到内部的FLASH 当中的,变量是可变的,不管是全局变量还是局部变量都放在内部的SRAM。因为数据可以被Dcode 总线和DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。2 o2 [: }- o+ }# e$ K" ^1 g 系统总线 系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通过这根系统总线来完成的。 DMA 总线 DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的FLASH。因为数据可以被Dcode 总线和DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。( B9 l+ ?$ H0 O( T2 c+ g9 R ; R8 l0 i) q+ T" K# j " }; y5 B+ E# t# \ 4. 被动单元2 r* Z3 Z: E" v8 X( x4 r% P 内部的闪存存储器" |8 \) a- [+ s( R 内部的闪存存储器即FLASH,我们编写好的程序就放在这个地方。内核通过ICode 总线来取里面的指令。 内部的SRAM( j1 P+ Y0 U; ~# [ 内部的SRAM,即我们通常说的RAM,程序的变量,堆栈等的开销都是基于内部的SRAM。内核通过DCode 总线来访问它。 ( ]) O7 _+ _5 k# q1 |+ a% J0 G FSMC FSMC 的英文全称是Flexible static memory controller,叫灵活的静态的存储器控制器,是STM32F10xx 中一个很有特色的外设,通过FSMC,我们可以扩展内存,如外部的SRAM,NANDFLASH 和NORFLASH。但有一点我们要注意的是,FSMC 只能扩展静态的内存,即名称里面的S:static,不能是动态的内存,比如SDRAM就不能扩展。 6 {; h: E) s! M AHB 到APB 的桥 从AHB 总线延伸出来的两条APB2 和APB1 总线,上面挂载着STM32 各种各样的特色外设。我们经常说的GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上,这个是我们学习STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。$ u( y- W7 z& N0 U# W ————————————————5 L7 ]' |" z) _3 q$ R" f. v 版权声明:打酱油的 如有侵权请联系删除 ( n' n! Q' g7 H2 x0 S. E . h |- y B" F0 C |, |+ c3 `* C0 e2 n% y |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版