STM32基础知识

STM32⼯作流程

- 在上电后,芯片复位启动。

- MCU从FLASH通过指令/数据总线分别读取指令和数据,配合解析执⾏,其中在通过RAM和通⽤    寄存器 (也就是R0~R12的内部寄存器)处理可变数据。

- 根据执⾏的指令,配置和操作外设的的寄存器,从⽽驱动对应外设实现具体的功能。

- 配合上层组合逻辑,结合外设功能,执⾏具体应⽤的全部需求。

上述就是芯片⼯作的流程,⽽作为单片机开发者,实现的代码就是放在FLASH中的程序,由官⽅提供的 SDK包和⽤户裁剪实现定义的外设驱动组成,按照上述流程就包含:

-- 芯片的启动过程中对堆栈的初始化。

-- 系统相关外设的处理(如时钟) => 这部分由⼚商提供,我们把文件放入项⽬即可,以STM32为例     就是启动 文件startup_xxx.s和系统初始化的SystemInit函数。

-- 配置应⽤需要的外设模块。

ICode 总线

ICode总线是专⻔⽤来取指令的,其中的I表⽰Instruction(指令),指令的意思。写好的程序编译之后都是⼀条 条指令,存放在 FLASH中,内核通过ICode总线读取这些指令来执⾏程序。

DCode总线

DCode这条总线是⽤来取数的,其中的D表⽰Data(数据)。在写程序的时候,数据有常量和变量两种。常量 就是固定不变的,⽤C语⾔中的const关键字修饰,放到内部FLASH当中。变量是可变的,不管是全局变量还是 局部变量都放在内部的SRAM。

系统System总线

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

DMA总线

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

内部的闪存存储器Flash

内部的闪存存储器即FLASH,编写好的程序就放在这个地⽅。内核通过ICode总线来取⾥⾯的指令。

内部的SRAM

内部的SRAM,是通常所说的内存,程序中的变量、堆栈等的开销都是基于内部SRAM,内核通过DCode总线来 访问它。 FSMC FSMC的英文全称是Flexible static memory controller(灵活的静态的存储器控制器)。通过FSMC可以扩展内 存,如外部的SRAM、NAND-FLASH和NORFLASH。但FSMC只能扩展静态的内存,不能是动态的内存,比如就 不能⽤来扩展SDRAM。

AHB

从AHB总线延伸出来的两条APB2和APB1总线是最常⻅的总线,GPIO、串⼝、I2C、SPI 这些外设就挂载在这两条 总线上。这个是学习STM32的重点,要学会对这些外设编程,去驱动外部的各种设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值