//=====================================================================4 Y- u& A. g' _+ @5 _" ?2 q
//TITLE:
/ G+ S& @) d2 d: u6 B// STM32F10X_XX宏定义的选择2 {3 ]8 v) J- A* T2 R; R( @
//AUTHOR:
6 d9 ~' }1 N2 [. i4 e" J8 c k// norains
( k, f3 C9 w& l//DATE:% P3 z1 k: @# A
// Tuesday 12-October-2010
/ R h. n1 {# j& X8 Z4 ]//Environment:
) h4 Z6 E* |0 O- u// KEIL MDK 4.0, _/ m* n+ U0 ~3 p$ u) m5 y) [
// RedCow Board
) I$ C* r5 x9 H5 Q6 \2 \& G//=====================================================================' y5 X& Z M3 S2 z1 c! P6 n D$ s$ m
: n8 Y$ n4 `! w1 `! [
如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,如:
' M% \* y6 j6 h3 ^- _6 `/ ~0 V. J- c5 W* c6 J0 Y8 f8 Y
- #if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)
/ G6 P- e% z) T4 c - /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */* j7 l/ W" }7 ?, `' [
- /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/ E6 i3 n- x$ `+ B1 e) K6 { - /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
9 l5 k1 @8 c$ q7 N - #define STM32F10X_CL /*!< STM32F10X_CL: STM32 Connectivity line devices */
: M5 X& G1 W; d9 |; |8 G - #endif
复制代码 & e- O. G# m! y9 F. S
至于要使用哪个宏,则需要根据具体的芯片来进行选择。那么,这些宏又对应着哪些具体的芯片呢?其实我们可以在《Reference manual》的第九章中找到答案,如文档截图:, n( K: J7 w; k$ O! a. K. p) s
2 `0 Y N1 E* R2 M/ p: v' K. A( |
3 Z" `; V/ b. J3 o9 S
. t( X4 K/ @0 v
/ S s4 G! c+ U8 b' x3 O 这段话的意思很明显,如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:
: V; ] J* _3 ~% G' o! k0 B% _1 g% j! T$ `( G3 S
) Z2 W4 M1 e' u. |! z) b
3 A. c' h9 `3 k" H 这些参数,和MDK的设备参数一致,如图所示:
* C5 `5 S# X7 a3 I8 C- Y( F0 r+ ~0 z( Y$ a
) j2 ^5 L" @, |5 x* y |