景德镇企业网站建设河南外贸网站制作
景德镇企业网站建设,河南外贸网站制作,网站建设现在好做吗,wordpress 创建模板文件文章目录一、STM32系统结构简图二、系统框图 1、驱动单元 #xff08;1#xff09;ICode 总线#xff1a; #xff08;2#xff09;DCode 总线#xff1a; #xff08;3#xff09;System 系统总线#xff1a; #xff08;4&…文章目录一、STM32系统结构简图二、系统框图1、驱动单元1ICode 总线2DCode 总线3System 系统总线4DMA 总线2、被动单元1内部的闪存存储器 —— Flash2内部的SRAM3静态的存储器控制器 —— FSMC4AHB 到 APB 的桥一、STM32系统结构简图二、系统框图1、驱动单元1ICode 总线ICode 中的 I 表示 Instruction即指令。我们写好的程序编译之后都是一条条指令存放在FLASH 中内核要读取这些指令来执行程序就必须通过 ICode 总线它几乎每时每刻都需要被使用它是专门用来取指的。个人总结我们编辑好我们的代码经过编译器编译生成计算机可执行的代码。这些代码我们可以通过反汇编查看其实就是一条条的指令计算机可以看懂的代码指令这些指令都存储在我们FLASH上CPU 通过 ICode 总线读取指令进行操作。2DCode 总线DCode 中的 D 表示 Data即数据那说明这条总线是用来取数的。我们在写程序的时候数据有常量和变量两种常量就是固定不变的用 C 语言中的 const 关键字修饰是放到内部FLASH 当中的变量是可变的不管是全局变量还是局部变量都放在内部的SRAM。 因为数据可以被 Dcode 总线和 DMA 总线访问所以为了避免访问冲突在取数的时候需要经过一个总线矩阵来仲裁决定哪个总线在取数。在C语言中全局变量通常存放在静态存储区不是堆上也不是栈上。具体来说全局变量存放在程序的 数据段 或 BSS段 中这是程序的静态存储区域。数据段 如果全局变量被初始化它们的值将存储在数据段中。数据段的大小在编译时确定包含所有已初始化的全局变量。BSS段 如果全局变量未被初始化它们的值将被初始化为零并存储在BSS段中。BSS段通常在可执行文件中占据一些空间但不存储实际的数据因为这些变量被默认初始化为零。在函数内声明的局部变量通常存储在栈上而动态分配的内存通过malloc、calloc等函数分配的存储在堆上。全局变量的生命周期通常是整个程序的运行时间而局部变量的生命周期则与其所在的函数调用有关。需要注意的是全局变量和静态变量在函数内使用static关键字声明的变量都在程序的静态存储区域因此它们的生命周期是整个程序的运行时间。3System 系统总线系统总线主要是访问外设的寄存器我们通常说的寄存器编程即读写寄存器都是通过这根系统总线来完成的。4DMA 总线DMA 总线也主要是用来传输数据这个数据可以是在某个外设的数据寄存器可以在SRAM可以在内部的 FLASH 。因为数据可以被 Dcode 总线和 DMA 总线访问所以为了避免访问冲突在取数的时候需要经过一个总线矩阵来仲裁决定哪个总线在取数。个人总结它允许片上外设直接访问计算机内存而不需要经过中央处理单元CPU的干预。这样可以在数据传输过程中解放 CPU使其能够执行其他任务从而提高系统的整体性能数据在DMA控制器下进行的数据传输过程中CPU 可以继续执行其他指令而不必等待数据传输的完成不受数据传输过程的干扰。2、被动单元1内部的闪存存储器 —— Flash内部的闪存存储器即 FLASH我们编写好的程序就放在这个地方。内核通过 ICode 总线来取里面的指令。我们程序中生成的一些重要数据也可以保存在芯片内部的flash中但要注意读写空间不要把程序运行的代码给篡改了。2内部的SRAM内部的SRAM即我们通常说的RAM程序的变量堆栈等的开销都是基于内部的SRAM。内核通过 DCode 总线来访问它。3静态的存储器控制器 —— FSMCFSMC的英文全称是Flexible Static Memory Controller叫灵活的静态的存储器控制器是STM32F10xx中一个很有特色的外设通过FSMC我们可以扩展内存如外部的SRAMNAND-FLASH和NORFLASH。但有一点我们要注意的是FSMC只能扩展静态的内存即名称里面的Sstatic不能是动态的内存比如SDRAM就不能扩展。4AHB 到 APB 的桥从 AHB 总线延伸出来的两条 APB2 和 APB1 总线上面挂载着STM32各种各样的特色外设。我们经常说的 GPIO、串口、I2C、SPI 这些外设就挂载在这两条总线上这个是我们学习STM32的重点就是要学会编程这些外设去驱动外部的各种设备。