收藏官网首页
查看: 9852|回复: 1

STM32 BOOT0 和 BOOT1启动原理

65

主题

123

帖子

787

积分

高级会员

Rank: 4

积分
787
跳转到指定楼层
楼主
发表于 2016-1-28 12:00:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
本帖最后由 Terry 于 2016-1-28 14:11 编辑

   ● 第一种启动方式是最常用的用户FLASH启动,正常工作就在这种模式下,STM32FLASH可以擦出10万次,所以不用担心芯片哪天会被擦爆!
    ● 第二种启动方式是系统存储器启动方式,即我们常说的串口下载方式(ISP),不建议使用这种,速度比较慢。STM32 中自带的BootLoader就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0/1到该模式下重新烧写Flash即可恢复正常。
    ● 第三种启动方式是STM32内嵌的SRAM启动。该模式用于调试。

STM32的内部闪存(FLASH)地址起始于0x08000000,一般情况下,程序文件就从此地
址开始写入。此外STM32是基于Cortex-M3内核的微控制器,其内部通过一张“中断向量表”
来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成
启动,而这张“中断向量表”的起始地址是0x08000004(0x8003000的程序中,中断向量表的地址是0x8003000),当中断来临,STM32的内部硬件机
制亦会自动将PC指针定位到“中断向量表”处,并根据中断源取出对应的中断向量执行中断
服务程序。
  在图53.1.1中,STM32在复位后,先从0X08000004地址取出复位中断向量的地址,并跳
转到复位中断服务程序,如图标号①所示;在复位中断服务程序执行完之后,会跳转到我们的
main函数,如图标号②所示;而我们的main函数一般都是一个死循环,在main函数执行过程
中,如果收到中断请求(发生重中断),此时STM32强制将PC指针指回中断向量表处,如图
标号③所示;然后,根据中断源进入相应的中断服务程序,如图标号④所示;在执行完中断服
务程序以后,程序再次返回main函数执行,如图标号⑤所示。

STM32启动流程.jpg (69.03 KB, 下载次数: 65)

STM32启动流程.jpg

1

主题

3

帖子

35

积分

新手上路

Rank: 1

积分
35
沙发
发表于 2016-2-16 09:29:15 | 只看该作者
谢谢分享,不过还是不太明白为什么从系统存储器启动,可以将代码拷贝到falsh
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表