你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】stm32f1的存储器与复位

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:45
一、存储器映射

       1、统一编址,程序存储器、数据存储器、外设寄存器组织在一个4GB的地址空间。

       2、小端格式

       3、映像(stm32f107,256KB产品)


可以看到,所谓的256KB闪存,是指主存储,片上FLASH如下图所示:

1342337656_6536.jpg


介绍了片上的资源后,来看他们的地址映像。芯片将4GB的空间,划分为8个512MB的块(block),这些块有些是整块不用的,芯片对地址的安排可以参考数据手册,memory mapping章节中的那个图。只有block1、2、3、7是使用的。

地址中block7是核内的外设对应的地址,block2是其他外设对应的地址。block1的低地址64KB是片上SRAM,block0则如下图

1342337868_7188.jpg


option bytes即是选项字节;system memory就是系统存储,也即片上ROM;这两部分就是所谓信息块。Flash就是指主存储,有256KB。
再往下看alias to flash or system memory.....这个区域256KB就是启动开始的区域。这个区域并没有一个自己的存储器,只是根据BOOT0、BOOT1的接法来选择哪个存储器映射到这个地址上。如下图

1342338432_4880.jpg


选择用户闪存启动,是典型的做法;选择系统存储器,则在ST烧写进去的自举程序引导下,通过USART1下载程序;选择从SRAM执行代码则方便调试,比较快。

二、复位

CM3将复位视作异常,优先级最高的异常。

stm32f1有三种复位:系统复位、电源复位、备份区复位。

前两种是真正的复位,对他的响应由硬件完成,这个响应对软件流的影响是这样的:程序指针指向0x0000 0004,这个单元存储的是复位服务子程序(或者汇编叫子过程),同时从0x0000 0000获取堆栈顶的地址。不同的复位类型还有对其他寄存的不同复位方式,这就完成了复位。而备份区复位则不然,The backup domain has two specific resets that affect only the backup domain(参考手册6.1 reset章节)

          零地址存放的是堆栈顶的地址,之后就是以Reset_Handler打头的向量表。

          上面所说的向量表的存储从零地址开始,这是缺省的情况,可以通过NVIC的一个寄存器来重定向向量表。(权威指南7.3向量表)

三、flash读写

  1. void flashwrite(u16 data)
  2. {
  3. FLASH_Unlock();
  4. while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
  5. FLASH->CR|=0x00000001;    //set PG
  6. *((u16 *)0x0803F800)=data;
  7. while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
  8. lxj= *((u16 *)0x0803F800);


  9. FLASH_Lock();
  10. }

  11. void flashread()
  12. {
  13. FLASH_Unlock();
  14. while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
  15. // FLASH->CR|=0x00000001;    //set PG
  16. // *((u16 *)0x0803F800)=data;
  17. // while(FLASH_GetFlagStatus(FLASH_FLAG_BSY)==1);
  18. lxj= *((u16 *)0x0803F800);


  19. FLASH_Lock();
  20. }
复制代码


没仔细看,但能实现读写,不过用这两个函数的话,有一个bug,记下来回头研究。

flash必须先擦再写,flash_write以后,再写确实不行了,但再次上电,就能在同一个地址写了。而且flash确实烧写好了,掉电后数据不会消失




1342338958_5565.jpg
收藏 评论0 发布时间:2021-11-28 22:45

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版