历史上的今天
今天是:2024年12月03日(星期二)
2018年12月03日 | stm32启动文件相关说明
2018-12-03 来源:eefocus
说的直白点就是以下区别,在选择启动文件的时候有选择性区别!
startup_stm32f10x_cl.s互联型的STM32F105xx,STM32F107xx
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s 超大容量FLASH在512K到1024K字节的STM32F101xx,STM32F102xx,STM32F103xx
疑问一:为什么需要选择启动文件?
1.建立中断服务入口地址,即把中断向量与中断服务函数链接起来。
我们知道在串口NVIC配置中我们只定义了个 NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
也就是中断服务向量,再然后我们在stm32f10x_it.c文件的void USART2_IRQHandler(void){} 函数里添加串口的服务程序。
但是mcu怎么知道中断向量USART2_IRQn对应的是USART2_IRQHandler(){}呢,这个就是启动文件所起的作用。
在启动文件 .s 中 以 g_pfnVectors: 开头。
2.从systeminit()函数进入到main()函数.
对于stm32我们定义系统时钟的时候直接在system_stm3210x.c文件里修改宏定义即可,而事实上到底是从哪开始执行的呢?
system_stm3210x.c文件里有个SystemInit()函数,就是对时钟的设置。
而这个SystemInit()在哪调用的呢,就是启动文件先调用了,然后才进入到mian()函数。
在启动文件 .s 中有以下一段话可以解释。
/* Call the clock system intitialization function.*/
bl SystemInit
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
3.有些启动文件定义了堆栈大小,可以在这里进行修改。(有些是在 .ld 进行定义的)
疑问二:这些文件在哪里?
打开官方库文件,可以了解到STM32F10x_StdPeriph_lib/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup
下有4个文件夹arm gcc_ride7 iar TrueSTUDIO
到底选择哪个文件夹呢? 这与编译器有关,不同的编译器调用的指令集是不同的,所以需谨慎选择
arm适用于arm编译器 gcc_ride7适用基于GCC_ride7编译器的 iar就不用说了都清除 TrueSTDIO是ST自己的编译器当然也是基于GCC的用MDK于eclipse可以使用
(在eclipse下用的GCC插件的话,需要把后缀名 .s 改为 .S成大写,不然会编译出错)
疑问三:怎么选择101xx 102xx 103xx是小容量、中容量还是大容量?
查user manual手册,以下为摘录

可以这么认为:flash容量<=32k 选择 ld
64k<= <=128k 选择 md
256<= <=512k 选择 hd
那怎么区分MCU是多大的flash容量呢?
可以参考下表对于芯片命名说明:Flash memory size

6:32K8:64K B:128KC:256K D:384KE:512K Flash memory size!
史海拾趣
|
周一下单, 今天周五就收到了, MPS发货速度还是挺快的. 包装非常结实, 外面一个大盒子,里面每件货都再装了一个小盒子. 这是一颗DCDC转换芯片: & ...… 查看全部问答> |
|
疑问:CMOS传输门内部是一个P沟道MOS和N沟道MOS对接,当C高电平时下端的N管是导通的,当C为低电平的时候上端PMOS管基极为低电平不也是导通?大佬们我是哪里理解有问题? … 查看全部问答> |
|
这次活动,太划算了,正好最近在做一个家庭环境监测板自己玩,就选了mEZS91202A这个现成的板子准备做供电用 收到时的包装 发货清单以及选型手册 板子单独用纸箱包装 板子实物 … 查看全部问答> |
|
ESP8266 WEB智能小后台 ,采电压,绘曲线,向服务器传信息 一个月前,自己想设计一个不用安装应用程序的智能手机控制的硬件。 是否有人有兴趣?有兴趣的可以联系我, 朝“自带 ...… 查看全部问答> |
|
本帖最后由 qinyunti 于 2022-11-25 23:07 编辑 借着论坛的活动,购买了EVM54304-MN-01A评估板和MP20048芯片。 到货了,赶紧开个箱。 包装很好,专业 … 查看全部问答> |
|
EEWorld邀你来拆解(第7期)——拆拆减肥利器----初步拆解 在使用了大概十天后,今天开始正式拆解。整体使用感受不错,在我咬牙切齿的锻炼下,体重下来了0.5公斤,又在我咬牙切齿的吃东西中,吃了回来。 真可谓 爱情和金钱可能会辜负你,离你远去,但是肥肉不会。 ...… 查看全部问答> |
|
啥也不说了,直接开箱,上图 主角来啦,EVM54304-MN-01A,这个家伙了不起,4路输出,我等不及去测试啦! 开箱结束,非常感谢eeworld和mps的活动! … 查看全部问答> |




