STMCU小助手
发布时间:2021-11-28 22:45
|
一、存储器映射 ) l4 W! G+ y) B9 J# p 1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。 2 {; P8 H {6 G3 V+ t6 A( H; R 2、小端格式 + R! r$ J* ]* S7 r' o6 Q, x* O* r# V 3、映像(stm32f107,256KB产品) ! U4 e# j2 V& n1 x$ T D 9 `# e+ V6 m; j, v/ s" S. e 可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示: : w" W7 t3 i1 u. O% }
& d8 q% l) G7 F8 r 介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安排可以参考数据手册,memory mapping章节中的那个图。只有block1、2、3、7是使用的。, D, H$ ~9 {5 X* R" p7 O0 X 5 g: Q) [3 h4 j6 k; e- O+ L 地址中block7是核内的外设对应的地址,block2是其他外设对应的地址。block1的低地址64KB是片上SRAM,block0则如下图
( F: `% ]$ ], _6 W option bytes即是选项字节;system memory就是系统存储,也即片上ROM;这两部分就是所谓信息块。Flash就是指主存储,有256KB。 再往下看alias to flash or system memory.....这个区域256KB就是启动开始的区域。这个区域并没有一个自己的存储器,只是根据BOOT0、BOOT1的接法来选择哪个存储器映射到这个地址上。如下图1 V" H' F9 A0 n& D/ a1 B
选择用户闪存启动,是典型的做法;选择系统存储器,则在ST烧写进去的自举程序引导下,通过USART1下载程序;选择从SRAM执行代码则方便调试,比较快。 ) t, j& ~3 ?' n6 @: O 二、复位; `$ o( w" a7 \, O; G+ A8 [7 e3 [ CM3将复位视作异常,优先级最高的异常。 % m1 R! W! q' Q6 G* i9 k+ l stm32f1有三种复位:系统复位、电源复位、备份区复位。8 X2 e. z( `% |' C7 f - P7 g1 \; s' ]4 Z- H- i9 U/ z6 s 前两种是真正的复位,对他的响应由硬件完成,这个响应对软件流的影响是这样的:程序指针指向0x0000 0004,这个单元存储的是复位服务子程序(或者汇编叫子过程),同时从0x0000 0000获取堆栈顶的地址。不同的复位类型还有对其他寄存的不同复位方式,这就完成了复位。而备份区复位则不然,The backup domain has two specific resets that affect only the backup domain(参考手册6.1 reset章节) n) {6 q i! T e 零地址存放的是堆栈顶的地址,之后就是以Reset_Handler打头的向量表。7 k0 _4 [* q, L1 ~' Q , c! d H/ F b3 R 上面所说的向量表的存储从零地址开始,这是缺省的情况,可以通过NVIC的一个寄存器来重定向向量表。(权威指南7.3向量表) 7 _. u! {5 [- W 三、flash读写 & ^& [) ^3 }& \8 g% M+ }
没仔细看,但能实现读写,不过用这两个函数的话,有一个bug,记下来回头研究。9 ^% E2 c* c9 L+ T7 E $ f1 a1 N7 M$ l5 R! V flash必须先擦再写,flash_write以后,再写确实不行了,但再次上电,就能在同一个地址写了。而且flash确实烧写好了,掉电后数据不会消失 |
【评分有奖】STM32 AI Sidekick聊天工具上线,快来体验一下吧!
ST TouchGFX 实操系列视频+如何选择正确的帧缓冲区策略
ST TouchGFX 实操系列视频++如何添加图像
ST TouchGFX 实操系列视频+如何进行屏幕转换
ST TouchGFX 实操系列视频+控件的淡入淡出
ST TouchGFX 实操系列视频+移动控件的三种方法
ST TouchGFX 实操系列视频+如何创建用户界面(UI)
ST TouchGFX 实操系列视频+如何安装TouchGFX Designer和STM32Cube软件环境
【经验分享】STM32F1 GPIO工作原理
【经验分享】STM32F0xx_DMA收发USART数据配置详细过程
微信公众号
手机版