高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-2
|
本帖最后由 kepma 于 2016-8-13 23:12 编辑
stm32f103VET6,看了火哥的 “零死角玩转STM32—F103霸道-2016-8-5(还没写完).pdf” 第15章节启动文件详解, 产生如下疑问,
1-stm32启动后,执行startup_stm32f10x_hd.s中代码,当执行到最后一段代码时,火哥的描述如下图。
“如果没有定义(实际的情况就是我们没定义__MICROLIB)则使用默认的C库,然后初始化用户堆栈大小,这部分有C库函数__main来完成”
其中,
1.1-默认的C库指的是什么 ?
1.2-初始化用户堆栈大小 为什么说是由C库函数__main来完成
2-执行完startup_stm32f10x_hd.s中所有代码,
2.1-下一步执行到哪行代码 ?
2.2- 启动文件中 哪个代码起到这样的跳转作用 ?
3-“在离开复位状态后, CM3 做的第一件事就是读取下列两个 32 位整数的值:”
我阅读后的理解是,stm32上电,执行startup_stm32f10x_hd.s中所有代码,然后读取向量表
1、从地址 0x0000,0000 处取出 MSP 的初始值
2、从地址 0x0000,0004 处取出 PC 的初始值——这个值是复位向量, LSB 必须是 1。 然后从这个值所对应的地址处取指,即执行Reset_Handler
3.1- “在离开复位状态后” 怎么理解?怎么操作才可以叫“在离开复位状态后”
3.2-在哪查看地址 0x0000,0004存的是 0x00000101
3.3-在哪查找Reset_Handler的地址是 0x00000101
问题较烦多,若是针对2.1回答,请回答时加“2.1”,这样好对应理解,先对评论者说谢谢。
|
|