完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
说的直白点就是以下区别,在选择启动文件的时候有选择性区别!
startup_STM32f10x_cl.s 疑问一:为什么需要选择启动文件? 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 疑问二:这些文件在哪里? 打开官方库文件,可以了解到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:32K 8:64K |
|
相关推荐
|
|
1085 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1041 浏览 2 评论
2145 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1240 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1660 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 03:43 , Processed in 0.551886 second(s), Total 66, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号