你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 系统配置控制器相关函数和类型

[复制链接]
STMCU小助手 发布时间:2022-6-13 09:55
01. 概述' O( r$ z/ l2 d2 k* D
系统配置控制器主要用于管理对可执行代码的存储区域的地址重映射、选择以太网 PHY 接口以及管理 GPIO 的外部中断线连接。
& [% Y! U8 w" g/ i8 w( h! P; \8 l9 C$ l4 H9 i/ ^7 S# m/ }( u
02. 相关类型0 |. E4 Y# O& T1 w3 g$ T% Z" D, W
SYSCFG_EXTI_Port_Sources  F  l  l: k6 z# R1 j

1 ]% |1 C: _% M; s8 Q
  1. /** @defgroup SYSCFG_EXTI_Port_Sources
    4 I2 g1 h" y! X  T
  2.   * @{5 }, c0 G' y& A  M
  3.   */
    * z& ~% z: \5 C# W+ g* r/ a
  4. #define EXTI_PortSourceGPIOA       ((uint8_t)0x00)3 c  f+ T' Q/ K1 q% s6 m
  5. #define EXTI_PortSourceGPIOB       ((uint8_t)0x01)5 I) ^5 t* D- \' e9 ^
  6. #define EXTI_PortSourceGPIOC       ((uint8_t)0x02)
    ; w( `' |. V# G
  7. #define EXTI_PortSourceGPIOD       ((uint8_t)0x03)
    - A+ o) N! u, P& D* e9 b- r0 x- w" G7 l, U
  8. #define EXTI_PortSourceGPIOE       ((uint8_t)0x04)  s0 H) n: D/ i* ^/ z) n" b2 b: S0 ?6 b
  9. #define EXTI_PortSourceGPIOF       ((uint8_t)0x05)
    ( K6 m# s% H3 q2 g1 q
  10. #define EXTI_PortSourceGPIOG       ((uint8_t)0x06), P" _+ R8 S! e! ?  L& d" B, b
  11. #define EXTI_PortSourceGPIOH       ((uint8_t)0x07)
    # F  h/ h3 |5 X" @7 Y  X; V$ E" c' ~
  12. #define EXTI_PortSourceGPIOI       ((uint8_t)0x08)  O1 T" q# x+ j' z# F. r2 ]
  13. #define EXTI_PortSourceGPIOJ       ((uint8_t)0x09)
    % `( W0 ~. e5 ~* w& r# m0 V, p
  14. #define EXTI_PortSourceGPIOK       ((uint8_t)0x0A)3 B9 e5 l1 s/ g' X9 V0 ~

  15.   m; E8 }" K# [9 A. A( d: ^0 r( I
  16. #define IS_EXTI_PORT_SOURCE(PORTSOURCE) (((PORTSOURCE) == EXTI_PortSourceGPIOA) || \# ^$ z3 f* z3 f+ Y! M6 P
  17.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOB) || \, z! ~: l; ~5 N9 ], [9 w% i" Y
  18.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOC) || \: S8 K5 j8 r/ l3 n$ |; s( Z
  19.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOD) || \
    ( o- E  h$ c% ^+ ^$ R8 c2 M
  20.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOE) || \* w: ~. c2 ~2 \1 p
  21.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOF) || \' r" V+ O  }0 X- q# o
  22.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOG) || \3 n* v2 c: G3 X2 h. \
  23.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOH) || \
    * k! s7 R$ |  ]
  24.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOI) || \
    5 P$ I1 F! j, d0 C6 g) n5 h
  25.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOJ) || \
    - f% m  ^% o: R8 ~  F
  26.                                          ((PORTSOURCE) == EXTI_PortSourceGPIOK))
复制代码

, Z, N) l4 Z1 OSYSCFG_EXTI_Pin_Sources
! O$ G' x: d) F& V& w0 E0 P+ h9 _: z" M& s. i/ C5 n+ J% x3 I' {
  1. /** @defgroup SYSCFG_EXTI_Pin_Sources 6 L' z* E. t2 x+ w' ~, T
  2.   * @{
    % u' O0 G  W6 W, T' S4 X& K+ i% b* A( f
  3.   */ . H6 l& F5 h5 h6 y6 T2 F
  4. #define EXTI_PinSource0            ((uint8_t)0x00)4 }' Q1 Z- _: K/ Q
  5. #define EXTI_PinSource1            ((uint8_t)0x01)
    5 \4 H2 e5 F$ o& l9 d* L+ ^
  6. #define EXTI_PinSource2            ((uint8_t)0x02)
    ; P' f  w6 M8 }8 b
  7. #define EXTI_PinSource3            ((uint8_t)0x03)
    1 l6 H1 o5 }4 u$ f" u
  8. #define EXTI_PinSource4            ((uint8_t)0x04); k  R7 k6 }9 _6 p7 y& N6 b# q4 c+ v
  9. #define EXTI_PinSource5            ((uint8_t)0x05)
    4 r1 M) f6 n/ ^8 g' V. ]3 C' I
  10. #define EXTI_PinSource6            ((uint8_t)0x06)8 `" c* _- U. z5 H$ S$ e9 F
  11. #define EXTI_PinSource7            ((uint8_t)0x07)# m% {7 E% x3 R6 _
  12. #define EXTI_PinSource8            ((uint8_t)0x08)
    1 Y8 K  X4 \, _/ ?& h* Y
  13. #define EXTI_PinSource9            ((uint8_t)0x09)( W7 L7 z7 i! z( p5 m
  14. #define EXTI_PinSource10           ((uint8_t)0x0A)
    , O. z9 p1 j6 U. J& Q1 _( p  k
  15. #define EXTI_PinSource11           ((uint8_t)0x0B)
    ( }, b" F. @6 }: P0 @! X9 T0 i& h. F
  16. #define EXTI_PinSource12           ((uint8_t)0x0C)& x9 ~% G! S! ~
  17. #define EXTI_PinSource13           ((uint8_t)0x0D)
    % X1 x) h. u' T* f
  18. #define EXTI_PinSource14           ((uint8_t)0x0E)
    2 N( b7 w$ b% S
  19. #define EXTI_PinSource15           ((uint8_t)0x0F)0 e' o/ a3 ]0 ]
  20. #define IS_EXTI_PIN_SOURCE(PINSOURCE) (((PINSOURCE) == EXTI_PinSource0)  || \- l" m, w9 p' C7 J- G* C
  21.                                        ((PINSOURCE) == EXTI_PinSource1)  || \
    # j9 ]4 T+ b5 g& K
  22.                                        ((PINSOURCE) == EXTI_PinSource2)  || \% w8 [. O: }# _# n- {, M6 j8 @
  23.                                        ((PINSOURCE) == EXTI_PinSource3)  || \/ O2 f' P  |8 j$ q) Q% }
  24.                                        ((PINSOURCE) == EXTI_PinSource4)  || \. [  n  }' q- I( ?0 f* _
  25.                                        ((PINSOURCE) == EXTI_PinSource5)  || \
    * q# s) E" L8 b- u6 V. W/ b
  26.                                        ((PINSOURCE) == EXTI_PinSource6)  || \
    0 ?8 `/ w" r6 U2 J: u0 ]
  27.                                        ((PINSOURCE) == EXTI_PinSource7)  || \
    2 p. A5 j% o( q! N: ^4 u
  28.                                        ((PINSOURCE) == EXTI_PinSource8)  || \2 L. }$ M& f/ h4 Y, _4 Q0 {- S, h
  29.                                        ((PINSOURCE) == EXTI_PinSource9)  || \
    ) P& u( f/ n) A- A: P
  30.                                        ((PINSOURCE) == EXTI_PinSource10) || \
    . `+ c( p+ G. J1 g2 d% _" A
  31.                                        ((PINSOURCE) == EXTI_PinSource11) || \. q. O% b# _/ g4 C" D) v
  32.                                        ((PINSOURCE) == EXTI_PinSource12) || \# }. I$ y0 @6 O
  33.                                        ((PINSOURCE) == EXTI_PinSource13) || \6 L( U" C  ]/ m6 d: M6 Z
  34.                                        ((PINSOURCE) == EXTI_PinSource14) || \% B  r1 z, i4 T4 _) N7 V
  35.                                        ((PINSOURCE) == EXTI_PinSource15))
复制代码
! h. g  t. i8 P2 j# U) M* X& O
SYSCFG_Memory_Remap_Config* @/ W, c( o; \* a3 Y1 t
, m3 U+ j! Q- t3 V$ u% _- U' w
  1. /** @defgroup SYSCFG_Memory_Remap_Config ) a" y' e7 l: R8 h8 Y# ~. S2 |
  2.   * @{/ t1 S) Y9 X& H2 R* K
  3.   */
    8 A5 A; t0 k1 r7 B( G6 ]
  4. #define SYSCFG_MemoryRemap_Flash       ((uint8_t)0x00)
    9 q: ]* G* g! T$ }8 s; n& r6 b
  5. #define SYSCFG_MemoryRemap_SystemFlash ((uint8_t)0x01)2 K$ F# y0 m. w
  6. #define SYSCFG_MemoryRemap_SRAM        ((uint8_t)0x03)3 Y, h+ B5 x* V9 l
  7. #define SYSCFG_MemoryRemap_SDRAM       ((uint8_t)0x04)
复制代码

8 _) O* v( M+ G/ X0 `SYSCFG_ETHERNET_Media_Interface
  1. /** @defgroup SYSCFG_ETHERNET_Media_Interface
    ) x& E2 l! X5 q/ Q, l- Z
  2.   * @{3 O' I! q. n6 w
  3.   */
    ' G7 @7 C% @, z6 {4 u) ~* O6 Y
  4. #define SYSCFG_ETH_MediaInterface_MII    ((uint32_t)0x00000000)
    3 H3 Q, o/ c+ H4 p
  5. #define SYSCFG_ETH_MediaInterface_RMII   ((uint32_t)0x00000001)
    3 u  u0 d$ z( J2 i- T; z

  6. 5 G' n% i" I+ Z3 G. t) u; o) p
  7. #define IS_SYSCFG_ETH_MEDIA_INTERFACE(INTERFACE) (((INTERFACE) == SYSCFG_ETH_MediaInterface_MII) || \
    3 j6 U3 {- Y5 z
  8.                                                  ((INTERFACE) == SYSCFG_ETH_MediaInterface_RMII))
复制代码
" v  m: r/ H! C8 i
03. 相关函数. |1 L/ d5 N9 z1 M. K
  1. /* Exported macro ------------------------------------------------------------*/
    : F5 {* J1 d- p1 d3 T0 O6 Y2 O( t
  2. /* Exported functions --------------------------------------------------------*/
    # m$ y# |4 X9 q% R- z
  3. . X" s/ {2 z: W* x- }0 _. A% S0 L
  4. void       SYSCFG_DeInit(void);
    1 C' W) R8 p5 U- T% R, v& _4 }
  5. void       SYSCFG_MemoryRemapConfig(uint8_t SYSCFG_MemoryRemap);
    + l' z# o1 u0 {; d0 ^1 Y7 g
  6. void       SYSCFG_MemorySwappingBank(FunctionalState NewState);
    " v6 L4 z# M5 q+ m$ g* m2 i  t. I
  7. void       SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex);
    6 q8 V; D3 F8 i$ y+ `7 O: k% Y3 l
  8. void       SYSCFG_ETH_MediaInterfaceConfig(uint32_t SYSCFG_ETH_MediaInterface); 3 R5 @+ J3 R% V
  9. void       SYSCFG_CompensationCellCmd(FunctionalState NewState); ! V& I1 s4 Q2 k9 Z: B
  10. FlagStatus SYSCFG_GetCompensationCellStatus(void);: |' E6 k7 c+ g8 c$ ^5 F% b

  11. ; L" O- ^) L) o1 Q, d- W- ]
  12. #if defined(STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx)5 _$ z$ U' F0 R8 B2 g$ P
  13. void       SYSCFG_BreakConfig(uint32_t SYSCFG_Break);
    : v, N" v" I2 \7 r* j
  14. #endif /* STM32F410xx || STM32F412xG || STM32F413_423xx */+ I" A2 w& A# d% ~5 }

  15. 1 f7 i8 k# A% [: z& E$ J9 u4 G

  16. . b/ ?: Q; B8 [  i3 U
  17. #if defined(STM32F413_423xx)
    2 k6 d! |7 B& g2 A
  18. void DFSDM_BitstreamClock_SourceSelection(uint32_t source);
    ' `6 s! ^+ l. y/ D; r
  19. void DFSDM_DisableDelayClock(uint32_t MCHDLY);6 W. H5 m$ j" m1 k* s9 v9 N5 v( [
  20. void DFSDM_EnableDelayClock(uint32_t MCHDLY);9 d2 Q$ \5 ^% f8 h* D2 @
  21. void DFSDM_ClockIn_SourceSelection(uint32_t source);' A, |" u; B" Z" J7 u
  22. void DFSDM_ClockOut_SourceSelection(uint32_t source);
    , o; Y7 h6 H: u& ?* \# ^0 P
  23. void DFSDM_DataIn0_SourceSelection(uint32_t source);( \0 w# ?1 W2 H4 y* {
  24. void DFSDM_DataIn2_SourceSelection(uint32_t source);
    ) N6 v4 W3 ]$ U% R  S9 k0 ^- w
  25. void DFSDM_DataIn4_SourceSelection(uint32_t source);. t& p, t) Y: B* K: v" i
  26. void DFSDM_DataIn6_SourceSelection(uint32_t source);
    6 j- p* c1 m, F6 r. c
  27. void DFSDM1_BitStreamClk_Config(uint32_t source);
    3 ?9 |% b' |7 u4 N0 y8 W2 b
  28. void DFSDM2_BitStreamClk_Config(uint32_t source);
    $ k1 S6 \% P6 x* j
  29. #endif /* STM32F413_423xx */
复制代码

) h7 P1 U) x' w2 A9 ~9 r+ n04. 结构体封装
; \* L2 [0 j9 q* V6 u5 P$ L# n系统配置控制器结构体封装. O. H+ v& r; q3 Q5 ?- t8 W
3 B# A7 O# |6 B/ L& u- ?
  1. /**
    4 |: d- o: p2 z7 h" m
  2.   * @brief System configuration controller+ m( u. v2 O# U5 T, l
  3.   */+ ~7 }# N! g2 Q2 i* L
  4. 1 o5 |" e3 w3 c' |2 R+ T
  5. typedef struct+ h7 g. h, ^5 G, e8 U# A
  6. {
    ' P9 s4 t, y3 I5 b* ~; X8 h' r- W
  7.   __IO uint32_t MEMRMP;       /*!< SYSCFG memory remap register,
    " H8 J  O/ W2 p; l; h2 K  _
  8.   Address offset: 0x00      */5 Z1 u% _8 m, j
  9.   __IO uint32_t PMC;          /*!< SYSCFG peripheral mode configuration register,4 A9 u1 M* \6 u+ \- ?
  10.   Address offset: 0x04      */
    9 N2 }" z) V4 b7 j8 a
  11.   __IO uint32_t EXTICR[4];    /*!< SYSCFG external interrupt configuration registers,# B% Z$ c* r. i% |: X
  12.   Address offset: 0x08-0x14 */' f2 Q# Y6 ~6 v2 N% i1 b2 n) T) y5 p0 a
  13. #if defined (STM32F410xx) || defined(STM32F412xG) || defined(STM32F413_423xx)
    9 d0 F- o# p& D
  14.   uint32_t      RESERVED;     /*!< Reserved, 0x18                                                               *// g2 s; y# f6 R3 H2 c% X/ w
  15.   __IO uint32_t CFGR2;        /*!< Reserved, 0x1C                                                               */
    * K* _8 ^# ?$ [2 i
  16.   __IO uint32_t CMPCR;        /*!< SYSCFG Compensation cell control register,& m- R* y) T1 _9 X* P2 f9 D$ W
  17.   Address offset: 0x20      */
    ; L4 d$ }) b/ ]% h/ E+ X
  18.   uint32_t      RESERVED1[2]; /*!< Reserved, 0x24-0x28                                                          */7 p3 B8 f0 u7 n  x8 w7 x3 A9 M6 A1 C
  19.   __IO uint32_t CFGR;         /*!< SYSCFG Configuration register,# @1 w- }* B' F+ {, G1 A
  20.   Address offset: 0x2C      */9 l5 t3 y) U( G5 ^7 Z# D0 ]
  21. #else  /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx ||! r) v  p$ P4 @" R, L4 k2 v! b1 e
  22. STM32F401xx || STM32F411xE || STM32F446xx || STM32F469_479xx */
    2 f0 O8 ?5 C9 y, @7 [. I
  23.   uint32_t      RESERVED[2];  /*!< Reserved, 0x18-0x1C                                                          */
    ! T: W0 c% C* e. r; l0 y: K3 W
  24.   __IO uint32_t CMPCR;        /*!< SYSCFG Compensation cell control register,( C( W7 Q/ E* n! |* X% u2 P; b, g
  25.   Address offset: 0x20      */
    7 V6 e% h' H! ^. g  Y6 I( _
  26. #endif /* STM32F410xx || defined(STM32F412xG) || defined(STM32F413_423xx) */
    ' d  Y- ~1 k3 x! t
  27. #if defined(STM32F413_423xx)+ r% x' W1 r1 |9 z. i: ?$ G! u6 G
  28.   __IO uint32_t MCHDLYCR;     /*!< SYSCFG multi-channel delay register,& W( V+ V7 }1 }3 ~" T- B
  29.   Address offset: 0x30      */
    % ?% T7 P6 |1 |9 Q: B1 r' P
  30. #endif /* STM32F413_423xx */! {. k. a) k& h) }9 P+ R
  31. } SYSCFG_TypeDef;
复制代码

/ W$ }# [# O/ k2 g
5 _4 l7 j" Q( K5 u5 ]. A" T& Z9 F8 `- n8 v$ e
' E1 F7 X4 @9 d: q
赞 收藏 评论0 发布时间:2022-6-13 09:55

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版