日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32启动文件ld md hd cl vl xl分析及选择

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32启动文件ld md hd cl vl xl分析及选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說的直白點就是以下區別,在選擇啟動文件的時候有選擇性區別!

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:32K 8:64K
B:128K C:256K
D:384K E:512K??Flash memory size!

總結

以上是生活随笔為你收集整理的stm32启动文件ld md hd cl vl xl分析及选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。