STM32简单记录之一:STM的启动

学习STM32已经有一段时间了,但回顾起来时却发现对有些知识点有些模糊了,今年就大三的下学期了,出于准备参加一些笔试面试,找到一份实习的机会,还有对于初学者一些参考资料,现在开始总结一下有关STM32的一些知识,希望对大家有所帮助,有错的地方希望大家留言指正。
计划分4到5个博客来讲:
(1)stm32启动
(2)stm32工程创建
(3)GPIO的讲解,基于库函数来说,剖析库函数是如何一步一步操作到寄存器的,计划用void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)函数来讲解
(4)端口复用以及重映射
(5)其他
好了,正式开始进入今天的主题:stm32的启动。插个外话(这个可能是我个人的原因,我是学习了stm32之后才去学的ARM A8,用的是三星的S5PV210,按照朱友鹏老师的学习顺序开始,里面很详细的介绍了S5PV210如何一步一步的启动起来的。所以当我回顾起来stm32这一部分的时候因为网上对于stm32底层启动的讲解很少,所以感觉缺少了些什么,没有对它的底层启动搞明白心里不爽。)
stm32有boot0以及boot1两个引脚,我们可以通过配置他们的模式来选择stm32的启动模式:
boot1 boot0 启动方式
x 0 从片上用户闪存启动(起始:0x0800_0000)
0 1 从片上系统闪存启动,运行BootLoader(0x1fff_0000)
1 1 从片上SRAM启动(0x2000_0000)
这两个引脚决定了三块物理存储器(片上用户闪存,片上系统闪存,片上SRAM)中的哪块映射到0x0的起始地址。boot引脚在复位后第四个SYSCLK上升沿采样锁定:boot0引脚是启动专用引脚(输入方向);boot1和GPIO共享引脚(采样确定启动空间后,即可被用户做GPIO使用)。从待机模式(Standby)退出后,会重新采样boot引脚电平:进入待机模式之前,用户要注意boot1的配置。
这其中就涉及到一个寄存器SYSCFG_MEMRMP,只有最低两位有效,其他保留,地址是:0x4001_3800。复位之后,boot引脚的值被拷贝到该寄存器中,唯一例外:当boot1=1/boot0 = 0从片上闪存启动时,寄存器值=0x00。
好了,上面讲解的是硬件上的配置支持。下面开始讲解软件上的支持。给出大致启动流程(相信大家都知道了中断向量还有什么中断向量表的概念,其实就是存储了一个地址值而已,当一个中断到来时到对应的中断向量表根据中断号找到里面的地址值进行下一步的跳转执行)。
流程示意图
(在这里用户程序是从0x0800_0000开始运行,如果是串口下载的话,首先boot1=1/boot0=0,下载完程序后,boot1=0/boot0=0,复位即可运行。需要两次设置,正点原子利用硬件电路加上上位机的控制达到了一键下载功能,感觉不错。我分析一下:当boot1=1/boot0=0的时候,实际上是从片上系统闪存开始运行的,即里面的BootLoader,应该是固化的代码,我个人找不到这个细节的资料,把我们的代码引导下载(或许间接复制转移)到了0x0800_0000的位置处。另外还有Jtack/swd调试下载方式,强烈建议swd方式)
向量表定义了中断的处理程序入口地址。在缺省情况下,CM3认为向量表位于零地址处。响应中断时,cm3会根据中断号从表中找出对应的中断处理程序的入口地址。每个表项占用4字节。位置0x0000_0000处保存的是MSP的初始值。依次排列各个中断号。在文件startup_stm32f1xx.s中定义。(我之前分享过这个文件的讲解)
CM3离开复位状态时,首先要做的是读取下面两个值:
从地址0x0000_0000取出MSP(主堆栈指针)的值;
从地址0x0000_0004取出复位向量(程序开始执行的地址,LSB必须是1,在Thumb状态下运行)
在执行完ResetHandler()完后跳转至main函数进行执行,至此完全进入到我们的C语言状态书写代码的执行。Ok,这部分就这样了。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值