//=====================================================================
1 b6 Y+ T3 e3 v2 Q//TITLE:
/ `# i6 ]; b8 r# t// STM32F10X_XX宏定义的选择
3 e6 L5 y/ M; l7 h9 N/ P" e//AUTHOR: d3 z# g* X0 M' E
// norains
5 B' |2 u3 }0 |# d0 u" G//DATE:; a. B: E" |$ J$ ^! j% S
// Tuesday 12-October-2010
* }. v6 J6 l6 [8 v& E//Environment:
( A7 D+ ^& S& B% o2 c// KEIL MDK 4.0
* {: E. B+ M, X' P// RedCow Board
% i/ Y7 o; d" [4 l//=====================================================================7 Y1 v9 ^7 R9 `4 p4 j, ^
# S4 ~; T6 `; {5 a# M6 q
如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,如:7 e; O: c) v' o# }5 c
' Z; {( O8 w- @' k; F3 t- #if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)- B; \$ L) U" x9 x: \
- /* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
, ]! k* ~! \$ ]& O4 H$ ~ - /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
5 J3 T3 n& v9 ~9 g( @ - /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */! M+ a5 _0 H5 ~
- #define STM32F10X_CL /*!< STM32F10X_CL: STM32 Connectivity line devices */- r$ i+ Z6 y! x1 N# L
- #endif
复制代码 ; p3 u7 y+ T, e0 F+ z8 F
至于要使用哪个宏,则需要根据具体的芯片来进行选择。那么,这些宏又对应着哪些具体的芯片呢?其实我们可以在《Reference manual》的第九章中找到答案,如文档截图:. u' |* X/ j, v/ n6 q5 g
. Z/ v5 z- _& L2 ?. H0 E, I# x8 l4 H9 D7 l7 L
6 z( E+ j' Y( @5 x+ { y+ i4 r! c% f9 V( g" r# I4 A" V
这段话的意思很明显,如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:
. |( _. {$ B- v! ^1 x, N1 N" O( S! K6 |: V* m- W
1 F, T3 R7 f5 V( X( a8 S) Y4 [9 ?; Q3 V) S- A3 l
这些参数,和MDK的设备参数一致,如图所示:
6 _! X3 G4 {5 t3 X3 G
6 E/ d1 c2 S9 G- x, [( |& @' T+ f3 j- b3 L
|