圖1. STM32F10xxx標準外設庫體繫結構先說這個問題,大家都知道,我們在選擇使用哪些外圍的的時候,是去更改從官方模版中拷貝過來的stm32f10x_conf.h文件的27-48行,把我們要用的外圍的頭文件包含進來,不用的外圍的頭文件註釋掉,但是你是否發現我們根本沒有在用戶主程式文件中包含st ...
圖1. STM32F10xxx標準外設庫體繫結構
先說這個問題,大家都知道,我們在選擇使用哪些外圍的的時候,是去更改從官方模版中拷貝過來的stm32f10x_conf.h文件的27-48行,把我們要用的外圍的頭文件包含進來,不用的外圍的頭文件註釋掉,但是你是否發現我們根本沒有在用戶主程式文件中包含stm32f10x_conf.h這個文件。那我們的修改這個文件怎麼進入主程式文件的呢?答案只有一個,它包含在stm32f10x.h這個文件中,因為在用戶主文件中我們第一句就使用了#include "stm32f10x.h",所以應該是stm32f10x.h這個文件包含了stm32f10x_conf.h,間接的包含進了用戶主程式文件中。(其實大家去看看固件庫的文件結構圖就明白了確實是這樣,我們推測是對的,參見下圖1) 圖1. STM32F10xxx標準外設庫體繫結構
2. 有了上面的認識我們打開stm32f10x_conf.h中搜索“stm32f10x_conf.h”,我們在8291-8293行看見這麼幾句代碼:
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif
大家看到問題所在了吧?這個條件編譯就是說:如果定義了USE_STDPERIPH_DRIVER標記,那麼就包含stm32f10x_conf.h,沒有定義就不包含。那不用說了,我們想使用固件庫,所以就應該預定義USE_STDPERIPH_DRIVER這個標記,KEIL提供了編譯前預定義標記的辦法,就是上面提到的在項目設置“option for targe”=>“C/C++”標簽=>“define”處加USE_STDPERIPH_DRIVER。如下圖2所示: 圖2. Keil開發環境(C/C++預設置視窗) 3. 大家肯定看見上面標記預設置區我還加入了另一個標記STM32F10X_HD,是因為大家會發現49-58行:需要我們指定期間的型號
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
/* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
/* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
/* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
:請問一下, STM32的STM32F10X_MD_VL和STM32F10X_MD有什麼區別呀?
- startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices
- startup_stm32f10x_ld.s: for STM32 Low density devices
- startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices
- startup_stm32f10x_md.s: for STM32 Medium density devices
- startup_stm32f10x_hd.s: for STM32 High density devices
- startup_stm32f10x_xl.s: for STM32 XL density devices
- startup_stm32f10x_cl.s: for STM32 Connectivity line devices
cl:互聯型產品,stm32f105/107系列
vl:超值型產品,stm32f100系列
xl:超高密度產品,stm32f101/103系列
ld:低密度產品,FLASH小於64K
md:中等密度產品,FLASH=64 or 128
hd:高密度產品,FLASH大於128 轉載內容,具體根據自己的情況設置。 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 cl:互聯型產品,stm32f105/107系列
vl:超值型產品,stm32f100系列
xl:超高密度產品,stm32f101/103系列
ld:低密度產品,FLASH小於64K
md:中等密度產品,FLASH=64 or 128
hd:高密度產品,FLASH大於128