一.所需文件說明
1.啟動文件startup_xxxx.s
-
作用:初始化堆棧指針、復位向量、中斷向量表,執行?
SystemInit()
?后跳轉到?main()
。 -
位置:
Libraries/CMSIS/Device/ST/STM32Fxx/Source/Templates/arm/?
-
文件名:
-
startup_stm32f10x_ld.s
(小容量,如 F103C8) -
startup_stm32f10x_md.s
(中容量,如 F103RC) -
startup_stm32f10x_hd.s
(大容量,如 F103ZE) -
其他型號(如 F4/F7)路徑類似,需匹配芯片型號。
-
詳細介紹可以參考下面的博主
STM32的啟動過程 — startup_xxxx.s文件解析(MDK和GCC雙環境)_stm32 .s文件-CSDN博客
2. CMSIS 核心文件
-
作用:提供 Cortex-M 內核抽象層(中斷、寄存器定義等)。
-
關鍵文件:
-
core_cm3.c
?/?core_cm4.c
(根據內核選擇)
位置:Libraries/CMSIS/Include/
-
system_stm32f10x.c
(初始化時鐘、Flash 等)
位置:Libraries/CMSIS/Device/ST/STM32F10x/Source/Templates/
-
頭文件:
core_cm3.h
、system_stm32f10x.h
-
詳細介紹可以參考下面的博主
CMSIS到底是個什么東西-CSDN博客
3. 標準外設庫文件
-
作用:外設驅動(GPIO、USART、SPI 等)。
-
位置:
Libraries/STM32F10x_StdPeriph_Driver/
-
源文件:
src/
?目錄(如?stm32f10x_gpio.c
,?stm32f10x_rcc.c
) -
頭文件:
inc/
?目錄(如?stm32f10x_gpio.h
,?stm32f10x_rcc.h
)
-
根據開發需求添加相應的外設庫文件
4. 用戶代碼
-
必要文件:
-
main.c
:主程序入口。 -
stm32f10x_it.c
:中斷服務函數(默認由庫提供模板)。
位置:Libraries/STM32F10x_StdPeriph_Driver/
?或項目自定義目錄 -
用戶自定義模塊(如?
led.c
,?uart.c
)。
-
二. 創建工程(STM32f030K6為例子)
1.去官網下載相應的標準外設庫文件
STM32標準外設軟件庫 - 意法半導體STMicroelectronics
點擊自己需要的類型
后面的登錄什么的就自己操作了
2.新建文件夾
?文件夾里面新建四個文件夾
3.放置相應的文件
Start文件夾
位置:Libraries/CMSIS/Device/ST/STM32Fxx/Source/Templates/arm/
?Libraly文件夾
我的習慣是直接將Libraly文件下的CMSIS和STM32F0xx_StdPeriph_Driver復制到自己的文件夾下
User文件夾
打開文件夾里面的示例
我打開一個比較簡單的GPIO?
?復制這五個到自己的User下面
MDK文件夾
?然后選擇自己相應的芯片點擊OK即可
4.keil操作
添加四個組
添加定義? USE_STDPERIPH_DRIVER,STM32F030,
添加四個文件路徑?
添加文件到對應組里面?
Start添加啟動文件?
CMSIS添加?system_stm32f0xx.c
?User添加三個文件
FWLIB文件是存放外設文件的,編程所需什么文件就添加什么文件,這里我就不添加了
修改編譯配置?
將主函數刪除內容編譯沒有錯誤就OK了