前提知识:
1、STM32F103内部存储器结构以及映射
STM32F103的程序存储器、数据存储器、寄存器和IO端口被组织在同一个4GB的线性地址空间内。数据字节以小端模式存放在存储器中。即低地址中存放的是字数据的低字节,高地址中存放的是字数据的高字节
存储器指本身没有地址信息,对存储器分配地址的过程称为存储器映射
可访问
的存储器空间被分成
8个主要块
,
每个块为512MB
。 其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间
1.1 第一块(0x0000 0000 ~ 0x1FFF FFFF,512MB):
启动空间(0x0000 0000 ~ 0x0800 0000,128MB):
代码区始终从0x0000 0000开始,通过ICode和DCode总线访问。
启动的执行流程:
内核复位之后:
(1)从地址 0x0000 0000 处获取出堆栈指针 MSP 的初始值,该值就是栈顶地址(中断向量表的第一项)
(2)从地址 0x0000 0004 处获取出程序计数器指针 PC 的初始值,该值是复位向量(中断向量表的第二项)
启动之后,
CPU从地址0x0000 0000获取堆栈顶SP的地址,并从存储器的0x0000 0004指示的地址(程序计数器指针PC)执行代码
之所以产生上述步骤,则因为不同厂商可能会把0x0000 0000以及0x0000 0004地址映射到其他地址。因此,根据映射到不同地址分为不同的启动方式(由BOOT引脚决定)
在系统复位后,SYSCLK
的第4个上升沿,BOOT
引脚的值将被锁存。用户可以通过设置
BOOT1 和BOOT0
引脚的状态,来选择在复位后的启动模式
启动模式1:从Flash开始启动,正常的下载启动程序
启动模式2:从系统存储器(
存储BOOTLoader程序,用于串口下载,将下载好的程序刷新到Flash位置)开始启动,由于系统存储器存储串口下载程序,通过这种启动方式可以通过串口将程序下载到Flash。
串口程序下载完成后,需要设置为从Flash启动,这样复位后才能正常运行程序(

本文详细介绍了STM32F103单片机的内存组织、启动模式选择、以及DMA(直接内存访问)的工作原理、配置和应用,包括DMA的通道结构、数据传输流程和相关库函数的使用。
最低0.47元/天 解锁文章
2222





