野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12307|回复: 5

stm32启动文件的疑问

[复制链接]
发表于 2015-10-6 16:30:50 | 显示全部楼层 |阅读模式
火哥,在我看完stm32的启动程序后,我对比了其他处理器的启动程序(arm的uboot),发现stm32的启动程序只是完成了两件事情:1)分配和初始化堆栈空间,2)制作的中断向量表并适当的编写了中断函数,相比与arm而言,他少了很多的硬件的操作:例如:系统频率的设置、内存的初始化、看门狗的初始化、nand flash的初始化等等,我想问下时候除了这个start_..文件外还调用了其他的初始化的文件呢???同时在调用__main之前,调用了个SystemInit这个地址,这个地址在哪啊???
回复

使用道具 举报

发表于 2015-10-6 16:57:34 | 显示全部楼层
SystemInit这个初始化了系统时钟,其它的看门狗、nand flash作为外设,默认是不初始化的。
SystemInit是一个函数,按F12就可以跳转到它的定义查看了
回复 支持 反对

使用道具 举报

发表于 2015-10-6 17:11:28 | 显示全部楼层
SystermInit()就是初始化硬件的呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-6 17:16:04 | 显示全部楼层
flyleaf 发表于 2015-10-6 16:57
SystemInit这个初始化了系统时钟,其它的看门狗、nand flash作为外设,默认是不初始化的。
SystemInit是一 ...

谢谢,已经看到了
回复 支持 反对

使用道具 举报

发表于 2015-10-6 17:32:05 | 显示全部楼层
系统频率的设置、内存的初始化、看门狗的初始化、nand flash的初始化等等

我来回答下你这句话

1、系统时钟的设置是调用SystemInit()这个函数来实现的,调用的结果是:HCLK = PLCK2 = SYSCLK = 72M,PLCK1= HCLK/2 = 36M

2、看门狗作为一个片上的外设,不初始化,当你需要用到的时候再用,跟ADC、USART这些外设一样

3、STM32内部集成了FLASH,不像ARM9或者11那些没有自带FLASH那样要扩展NANDFLASH,所以STM32
不用在启动文件中初始化NAND

4、内存的初始化,当编译器遇到_main这个标号的时候,编译器就自动生成_main函数,这里面做了一下工作,就包括了一些内存的初始化,这些是很底层底层的了

太具体的我也没有深入研究,你有兴趣可以深入下,你发贴说的也理解的差不多,是那么个大概。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-6 19:29:27 | 显示全部楼层
fire 发表于 2015-10-6 17:32
系统频率的设置、内存的初始化、看门狗的初始化、nand flash的初始化等等

我来回答下你这句话

非常详细,谢谢火哥
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-25 07:23 , Processed in 0.030331 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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