STM32芯片架构

FLASH:程序存储器,用于存储程序代码。
SRAM:数据存储器,用于存储变量。
内核与外设的通信方式:
ICode总线与FLASH进行通信,I表示Instruction,即指令,专门用来取址。以此读取程序运行。
1、DCode既可读取FLASH,也可读取SRAM。FLASH存储常量,即烧写后不可改变的量,C语言中用code修饰以存储到FLASH。SRAM存储变量,在程序中所有的变量无论是局部变量还是全局变量都存储在SRAM中。
2、System用来读取寄存器数据,即对外设进行控制时数据的传输线。
3、DMA可以不通过CPU直接传输数据,当数据传输时CPU只需要发送一个指令即可使其数据不通过CPU发送,加快CPU的效率,某种程度上做到CPU双线运行。
4、总线矩阵用来仲裁,DMA与DCode都可以读取数据,避免两者读数冲突,于是用总线矩阵进行仲裁决定由谁来读取数据,相当于一个开关。
5、AHB总线:分为APB1和APB2两总线,分别挂载一部分外设,用于控制外设的时钟线,尤为重要。

每一个外设在STM32中都会分配一个地址
以GPIOB为例
GPIOB整体地址为0x4001 0C00 ——04001 0FFF
ODR寄存器为端口的数据寄存器,控制GPIOB的16个引脚的数据输出,地址偏移为0CH
故要找到GPIOB_ODR寄存器,只需要用GPIOB的基地址加上ODR寄存器的偏移地址
//GPIOB端口全部输出高电平
*(unsined int*)(0x40010C0C) = 0xFFFF;
//(unsigned int*)表示为强制地址转换,即将这一串数字转换为地址。
//*取地址内容,如果学过汇编的话*(unsigned int*)相当于@;
总结:对于单片机操控其实都是定位每个外设的地址,然后对地址里的内容进行操作,这便是寄存器操作,也是所有单片机的通用逻辑。
STM32的架构包括FLASH和SRAM,ICode总线用于取指令,DCode处理数据读取,System总线控制寄存器,DMA提高数据传输效率。总线矩阵解决仲裁问题,AHB总线管理外设时钟。每个外设如GPIOB有特定地址,通过操作寄存器实现功能,这是单片机的基本操作逻辑。
8045

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



