- 1
- 0
- 约3.2千字
- 约 6页
- 2017-08-20 发布于浙江
- 举报
sm32存储映射的
Cortex-M3 结构:
哈佛结构,独立的指令总线和数据总线,但指令与数据总线共用一个存储器
Cortex-M3内核通过I-Code、D-Code、System总线与STM32内部的Flash、SROM相连接的,该种连接情况直接关系到STM32存储器的结构组织;也就是说,Cortex-M3的存储器结构决定了STM32的存储器结构。
STM32 系统结构
Cortex—M3 存储器结构决定STM32的存储结构,存储器映射就是把芯片外的FLASH RAM 外设等统一编址、用地址来表示对象 。
Cortex-M3 存储映射
Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。
stm32是基于CORTEX-M3的,下图是stm32实际系统映射与上图的区别:
STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB
不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。
其中:
Peripherals:外设的存储器映射,对该区域操作,就是对相应的外设进行操作;
SRAM:运行时临时存放代码的地方;
Flash:存放代码的地方;
System Memory:STM32出厂时自带的你只能使用,不能写或擦除;(bootload里的烧写程序)
Option Bytes:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现);
程序运行、寄存器设置、ICP、IAP都依靠这些东西。
启动部分:
堆和栈的初始化;2)向量表定义;3)地址重映射及中断向量表的转移;4)设置系时钟频率;5)中断寄存器的初始化;6)跳到main函数
首先系统复位时,Cortex-M3从代码区偏移0获取栈顶地址,用来初始化MSP寄存器的值。接下来从代码区偏移0取第一个指令的跳转地址起始地址存放栈顶地址,第二个地址就是复位中断向量的入口地址在启动文件里就是Rest_Handler
三种启动模式,通过boot引脚设置中断向量表 定位PC
1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处;
2、 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x0800000,同时复位后PC指针位于0;
3、 通过boot引脚设置可以将中断向量表定位于内置Bootloader区
从主闪存存储器启动,主闪存存储器被映射到启动空间(0,但仍能在原地址(0x1FFFF000)访问;从系统存储器启动:系统存储器被映射到启动空间(0。
从内置的SRAM启动,只能在0始地址区访问SRAM。
STM32 时钟分析
STM32之时钟树??????????STM32有五个时钟源:HSI、HSE、LSI、LSE、PLL
1.1?????????HSI:高速内部时钟、RC振荡器、频率为8MHz、时钟精度较差,可作为备用时钟源(时钟安全系统CSS)。
1.2?????????HSE:高速外部时钟、可接外部晶体/陶瓷谐振器(4MHz~16MHz)或外部时钟源(HSE旁路,Max 25MHz)。
1.3?????????LSI:低速内部时钟、RC振荡器、频率为40kHz,大容量MCU可进行LSI时钟校准。
1.4?????????LSE:低速外部时钟、接频率为32.768kHz的外部晶体/陶瓷谐振器。
1.5?????????PLL:锁相环倍频输出,时钟输入源可选择HSI/2、HSE或HSE/2。倍频可选择为2~16倍,最大输出72MHz。
?
用户可通过多个预分频器配置AHB总线、高速APB2总线和低速APB1总线的频率。AHB和APB2域的最大频率是72MHZ。APB1域的最大允许频率是36MHZ。SDIO接口的时钟频率固定为HCLK/2。
?
??????????40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。RTC的时钟源通过RTCSEL[1:0]来选择。
??????????STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或
原创力文档

文档评论(0)