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

【经验分享】STM32 DAC相关函数和类型

[复制链接]
STMCU小助手 发布时间:2022-6-16 17:00
01. DAC简介; a  O8 B) t$ z* Y4 K1 k
STM32F4的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下,2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输出。DAC 可以通过引脚输入参考电压 Vref+(通 ADC 共用)以获得更精确的转换结果。2 C% Y/ h. t0 C
STM32F4 的 DAC 模块主要特点有:
  c5 B& g% r6 h① 2 个 DAC 转换器:每个转换器对应 1 个输出通道: o' r. z6 |! e; d# i1 x3 D" ]
② 8 位或者 12 位单调输出( D1 T5 E" S0 n# e; O, Y: w6 X
③ 12 位模式下数据左对齐或者右对齐
, v" T2 S6 H# w2 b4 \' c8 L④ 同步更新功能
3 F( V, P3 ]. f* u, w⑤ 噪声波形生成0 y$ `4 m9 V6 ~$ \% o
⑥ 三角波形生成
/ A5 @3 H* b: [$ f6 D4 j# h& p2 x⑦ 双 DAC 通道同时或者分别转换/ U* H0 s! n2 l& L, E# `
⑧ 每个通道都有 DMA 功能
% X9 ~7 L, R; }* y& Z( ^1 i6 m3 h/ k5 h
* a$ _+ g. a- o$ l02. 相关类型
5 I0 ]$ U' M! D% s  C6 dDAC Init structure+ c' W: o' Q% T) {6 `/ F

  i  H" N3 y5 B* D: T
  1. /** 9 a7 T8 @4 U/ _' C
  2.   * @brief  DAC Init structure definition. M+ G7 I! M" `# C7 [) G
  3.   */5 D& r* v( }+ ^8 q
  4. ) j; o: P( a8 h
  5. typedef struct
    4 ?+ P6 @4 d& h& l' X
  6. {
    " G0 v! _% }$ ?( ]$ j
  7.   uint32_t DAC_Trigger;                      /*!< Specifies the external trigger for the selected DAC channel.) e2 N) u; M6 W) \" C
  8.                                                   This parameter can be a value of @ref DAC_trigger_selection */1 P/ A7 K9 R3 h7 m0 G% x
  9. : q; n* _/ I% |1 B) A" f
  10.   uint32_t DAC_WaveGeneration;               /*!< Specifies whether DAC channel noise waves or triangle waves
    # l: u4 d) Y$ O9 e9 N/ B7 R) ?
  11.                                                   are generated, or whether no wave is generated.
    / b' k7 P* v! ]2 Z3 S* z7 b. f
  12.                                                   This parameter can be a value of @ref DAC_wave_generation */, F7 S& V' d7 H( M5 W7 m
  13. + v1 O6 ~+ [6 r* O0 W. ~: g/ ?' q6 s: g
  14.   uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or# N  f4 f! v/ T
  15.                                                   the maximum amplitude triangle generation for the DAC channel. 5 N* H+ e( t: _9 V% U6 C
  16.                                                   This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */* ?, h, w8 t) y  V$ P8 E
  17. 9 j$ F9 P/ E  A. E6 ^
  18.   uint32_t DAC_OutputBuffer;                 /*!< Specifies whether the DAC channel output buffer is enabled or disabled.8 |, W5 U; \, O; C+ [, G' M
  19.                                                   This parameter can be a value of @ref DAC_output_buffer */
    . B9 d$ w6 b2 g$ y( u. r; u
  20. }DAC_InitTypeDef;
复制代码
7 H5 k& ]( f/ U. G( `3 T6 u
DAC_trigger_selection# D# |# |$ x: G; E9 L
: e  l7 p0 i" P/ B
  1. /** @defgroup DAC_trigger_selection
    0 @6 Z) J  K5 H7 v
  2.   * @{" P6 @" t( G# I$ V, X' C
  3.   */5 E8 G3 t$ k$ }% H( L& |1 }& T3 \
  4. ' o% X5 R% b: c6 i" m0 g0 `
  5. #define DAC_Trigger_None                   ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register + T& J; E' Q, U' H% G
  6.                                                                        has been loaded, and not by external trigger */6 Z* N# t  Q1 d* f
  7. #define DAC_Trigger_T2_TRGO                ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
    * H% H$ b) ^6 c3 ?
  8. #define DAC_Trigger_T4_TRGO                ((uint32_t)0x0000002C) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */: ?" f; j" n, e. ?& R( z; Y6 T
  9. #define DAC_Trigger_T5_TRGO                ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */+ K5 n0 E, `' f* _
  10. #define DAC_Trigger_T6_TRGO                ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */2 z" {6 Y9 {' G5 M
  11. #define DAC_Trigger_T7_TRGO                ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
    6 l' K9 Q" `+ L" E
  12. #define DAC_Trigger_T8_TRGO                ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC channel */                                                                       
    9 f5 m( b: O2 V* ?/ d+ |: B
  13. / I; T3 v/ y0 u" w: f; Y
  14. #define DAC_Trigger_Ext_IT9                ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */
    6 h3 V/ L$ ], v! C2 O, i
  15. #define DAC_Trigger_Software               ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */
    ; o8 [% b5 _+ O" ^6 I
  16. . Y3 p9 b/ T! R3 Y! w" Y- _
  17. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \0 E3 n1 j. F8 P; `9 I
  18.                                  ((TRIGGER) == DAC_Trigger_T6_TRGO) || \' ?/ v) J  i0 D& {0 m2 G# A2 w
  19.                                  ((TRIGGER) == DAC_Trigger_T8_TRGO) || \
      C3 A# C0 D, Z; x. R4 [
  20.                                  ((TRIGGER) == DAC_Trigger_T7_TRGO) || \
    - I7 h# w; D6 D0 s+ R' d! }. E  C0 T
  21.                                  ((TRIGGER) == DAC_Trigger_T5_TRGO) || \
    4 I% x4 `. \, d' d# K  ~5 Z3 M8 [
  22.                                  ((TRIGGER) == DAC_Trigger_T2_TRGO) || \% P3 D+ {+ T3 g. ]+ u/ h3 }' w
  23.                                  ((TRIGGER) == DAC_Trigger_T4_TRGO) || \; y( y$ }" _* T' a# e5 C) p
  24.                                  ((TRIGGER) == DAC_Trigger_Ext_IT9) || \$ f" Y8 N6 y& D6 D: L' h
  25.                                  ((TRIGGER) == DAC_Trigger_Software))
复制代码

& y! z: @( o1 R3 E9 }9 k) mDAC_wave_generation1 u' \. J: f2 g1 H

4 }. U! }" P% j1 n8 R
  1. /** @defgroup DAC_wave_generation 6 \( Z+ k+ [/ u' X
  2.   * @{( l$ F: ]3 ~! V! X. k
  3.   */( F  G4 a8 Q% F( t- Y/ k, W  y( Z

  4. 6 f0 O, \8 Y) s- P: p7 `" U
  5. #define DAC_WaveGeneration_None            ((uint32_t)0x00000000)
    4 f8 M) D+ @% [' m/ u
  6. #define DAC_WaveGeneration_Noise           ((uint32_t)0x00000040)
    " K+ S% Y: I/ G3 |
  7. #define DAC_WaveGeneration_Triangle        ((uint32_t)0x00000080)7 Q/ X( C- r0 ?% k# b. [
  8. #define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \
    ' ]$ B6 w$ m% n% F6 P; [6 L2 e5 g3 f$ ]
  9.                                     ((WAVE) == DAC_WaveGeneration_Noise) || \4 ^3 N! y# k% {5 _8 s, s" P
  10.                                     ((WAVE) == DAC_WaveGeneration_Triangle))
复制代码
3 V% _; V0 J3 ^9 b6 ^- j
DAC_lfsrunmask_triangleamplitude
6 \9 ]- S; B* N3 O  ~; n+ N( t" v- A, Z

  1. 1 c  d3 N# ^$ h, J4 j, d$ o; p
  2. /** @defgroup DAC_lfsrunmask_triangleamplitude
    " A. f* A: ?: ]# h/ @
  3.   * @{5 j( i9 l2 j) o9 O" f/ o
  4.   */
    5 e  S( S5 T5 o
  5. . t  i8 H0 h1 K; }
  6. #define DAC_LFSRUnmask_Bit0                ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */# u8 n1 k& ?  _8 G# i# ]
  7. #define DAC_LFSRUnmask_Bits1_0             ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */- p: k; C) D+ t6 Y# j2 D  J
  8. #define DAC_LFSRUnmask_Bits2_0             ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation */
    # f0 U" Q% v$ V) m7 v8 {/ d
  9. #define DAC_LFSRUnmask_Bits3_0             ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */. C4 l' [. \7 ~) S
  10. #define DAC_LFSRUnmask_Bits4_0             ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */# d2 B6 L+ R; X; g0 \" K/ C, _
  11. #define DAC_LFSRUnmask_Bits5_0             ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */- n. n% t! l' Z" _8 o" v4 p
  12. #define DAC_LFSRUnmask_Bits6_0             ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */
    6 N3 Z* y2 H/ [9 J  p3 ?
  13. #define DAC_LFSRUnmask_Bits7_0             ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */
    ) i8 Y- I- d) h1 U
  14. #define DAC_LFSRUnmask_Bits8_0             ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
    / @! K6 H' {9 L
  15. #define DAC_LFSRUnmask_Bits9_0             ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */' E4 f. s- ^' R$ H  @7 L" w4 N
  16. #define DAC_LFSRUnmask_Bits10_0            ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */
    ; e( I) y7 d6 k/ c" e. n5 v* u' G
  17. #define DAC_LFSRUnmask_Bits11_0            ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */( [7 X0 A: B- T6 |% T/ V6 @
  18. #define DAC_TriangleAmplitude_1            ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
    8 _) K( ]; C" P) }% w+ W( `( `$ K
  19. #define DAC_TriangleAmplitude_3            ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */4 e2 z* s5 t( H0 D2 F
  20. #define DAC_TriangleAmplitude_7            ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 *// |/ Q9 m( h# o% i8 s" h+ h! J
  21. #define DAC_TriangleAmplitude_15           ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */
    % v0 i7 b7 L' O. l  `8 y" r0 Q' V" C
  22. #define DAC_TriangleAmplitude_31           ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */
    8 D0 i! y/ U4 I9 d
  23. #define DAC_TriangleAmplitude_63           ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */
    ) Z$ `4 L( V+ k& Z8 {2 [  m! X
  24. #define DAC_TriangleAmplitude_127          ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */9 Q7 V. D5 V* ]! Z! Y
  25. #define DAC_TriangleAmplitude_255          ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */4 X$ S; c- \: T7 p2 \% f& I: {
  26. #define DAC_TriangleAmplitude_511          ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */, _+ j/ h& x- ~2 r: r
  27. #define DAC_TriangleAmplitude_1023         ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */9 \! p& O4 K, ~+ n
  28. #define DAC_TriangleAmplitude_2047         ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
    5 F- b8 Z; n& E. g+ M0 w) J
  29. #define DAC_TriangleAmplitude_4095         ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
    + N( ]+ K' z) q! `% w5 p6 Y

  30. 6 _9 Q1 ~' x5 u- u
  31. #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
    / Y2 N6 j' ]! o9 g8 u
  32.                                                       ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \' M2 y3 ~. }9 _* T, [2 `1 Z
  33.                                                       ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \0 s' @) |8 n8 {& g# R: y- Q
  34.                                                       ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \( u( T$ H! r2 R7 K2 d' I. ~7 s! c4 d
  35.                                                       ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \: O6 C! U7 Q$ N- Y
  36.                                                       ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \2 h% I# O2 m; \
  37.                                                       ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \  ?1 \) }+ I, V' n2 r! |
  38.                                                       ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
    : P* e' P1 E  B" A8 P' S5 o6 V
  39.                                                       ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
    * a- s5 c, W: X
  40.                                                       ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \4 o! w9 n. i; p  Y% v# N$ Z
  41.                                                       ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \4 d& r  }' O0 i. Z7 J$ g' [0 }
  42.                                                       ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \: H6 l6 g; @& h* h
  43.                                                       ((VALUE) == DAC_TriangleAmplitude_1) || \
    # d2 X& y0 T; O: Z$ E0 L5 N4 |2 z
  44.                                                       ((VALUE) == DAC_TriangleAmplitude_3) || \! G5 {7 @( C  d; u( Y7 Y' q! e
  45.                                                       ((VALUE) == DAC_TriangleAmplitude_7) || \% b0 V, u, ]4 Z/ {
  46.                                                       ((VALUE) == DAC_TriangleAmplitude_15) || \
    + b* |4 R7 d! s
  47.                                                       ((VALUE) == DAC_TriangleAmplitude_31) || \
    3 ]) V" @; K1 i: w) i
  48.                                                       ((VALUE) == DAC_TriangleAmplitude_63) || \( p; u% s7 R1 A2 O) Y
  49.                                                       ((VALUE) == DAC_TriangleAmplitude_127) || \
    / L! [! |) v$ A1 E% s
  50.                                                       ((VALUE) == DAC_TriangleAmplitude_255) || \
    3 A7 m3 l+ v1 J( A
  51.                                                       ((VALUE) == DAC_TriangleAmplitude_511) || \7 t& D2 w- ]$ W
  52.                                                       ((VALUE) == DAC_TriangleAmplitude_1023) || \9 U: ?3 C; f2 R& B
  53.                                                       ((VALUE) == DAC_TriangleAmplitude_2047) || \
    9 d" T' M# z. D' _  h
  54.                                                       ((VALUE) == DAC_TriangleAmplitude_4095))
复制代码
* e& J) P/ }' i
DAC_output_buffer
3 n4 P$ b8 t' e; O/ T
# C8 k8 T" I; M" L6 K% u% M
  1. /** @defgroup DAC_output_buffer - y6 A& z9 ]4 k0 _5 m
  2.   * @{
    7 v0 a6 r0 ~4 h9 A) i, g
  3.   */
    5 k! I5 }9 Y, s- S
  4. - K7 p0 M" c; _0 z
  5. #define DAC_OutputBuffer_Enable            ((uint32_t)0x00000000)
    3 w; C* q0 O9 k; j) {% r* q
  6. #define DAC_OutputBuffer_Disable           ((uint32_t)0x00000002)! z* c, G$ o: L+ B1 w* p8 V
  7. #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \
    0 {7 Z- _+ A6 V" F6 Q/ E2 N
  8.                                            ((STATE) == DAC_OutputBuffer_Disable))
复制代码

) n' [3 @. L/ B( V7 ^. ^DAC_Channel_selection
: p$ `; O+ I! o7 O  w9 b1 G. i8 e7 c* t% h  \4 }  A5 e% {2 j  ]
  1. /** @defgroup DAC_Channel_selection
    : W* ^! Q; @4 |0 _
  2.   * @{
    7 S4 l$ Z9 g/ q  R  N, j
  3.   */
    ; M* A' G- A! K( Z3 M. z
  4. & C8 \4 p& W$ t
  5. #define DAC_Channel_1                      ((uint32_t)0x00000000)4 P* x& W! q4 T+ d$ f% y" }4 F
  6. #define DAC_Channel_2                      ((uint32_t)0x00000010)
    ; e! V. A' j$ p" n" u
  7. #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \* a2 {0 _* S" U
  8.                                  ((CHANNEL) == DAC_Channel_2))
复制代码
* s8 ~/ [5 \' V6 M& Y6 X  |- f
DAC_data_alignement
2 s. S+ o7 k6 b$ q) F0 f# R
# Q0 H6 c7 s* B) L' o# X% ]- N
  1. /** @defgroup DAC_data_alignement
    " B5 n. k) n3 w. ]2 S( E& ?6 q
  2.   * @{2 y7 l% I& p1 D! e  M
  3.   */
    ! Z4 B' j' g# D: F
  4. 5 H9 k9 I& T3 a  l0 n3 a" R1 O. K/ ~) o
  5. #define DAC_Align_12b_R                    ((uint32_t)0x00000000)
    % f# W# c' h. S4 Z, e0 t
  6. #define DAC_Align_12b_L                    ((uint32_t)0x00000004)
    ! T" D+ h1 W: E( E  Q$ W
  7. #define DAC_Align_8b_R                     ((uint32_t)0x00000008)4 K- F* N1 w2 i
  8. #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \
    % N, L4 D4 B8 k* }5 ]2 O
  9.                              ((ALIGN) == DAC_Align_12b_L) || \
    ) R4 O' H& {& m4 w0 y0 j: F1 K% Z
  10.                              ((ALIGN) == DAC_Align_8b_R))
复制代码
1 M, y) C& J6 c2 |5 y2 v$ `) o* E$ Y
DAC_wave_generation3 I0 v/ h& [7 ]2 r3 h9 Y& P
4 m3 g" g' L8 i2 h# J" x2 Y
  1. /** @defgroup DAC_wave_generation * i3 h1 q: V) W. G
  2.   * @{  U6 ^7 |6 n0 d& N8 d% T
  3.   */6 ^. X0 o* P' y- U% [! `

  4. - H) a2 C- v& {; m9 t; s
  5. #define DAC_Wave_Noise                     ((uint32_t)0x00000040)
    ' ?0 t+ o) G3 o6 z7 a
  6. #define DAC_Wave_Triangle                  ((uint32_t)0x00000080)' [' D: ~3 c1 V: D: [2 D
  7. #define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \
    : T- ^* y4 U9 D+ e
  8.                            ((WAVE) == DAC_Wave_Triangle))
复制代码

5 I8 K) O# r& Y其它
; p9 l# S# H2 A; W2 ^5 @. m3 [0 B4 Q
, P+ a3 R! u& \3 Y- J% z8 Q, j
  1. /** @defgroup DAC_data , a  T7 P4 G, }. o8 Z9 S3 ]
  2.   * @{- l) F+ k; o6 v
  3.   */
    + v  w3 n6 a. X1 m

  4. : T- b  n, F* l5 w
  5. #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0)
    ( Y3 n. H( s" B; U0 p  `
  6. /**
    $ r4 H2 s- a, i
  7.   * @}0 m7 ^& H4 l8 C2 x, ?
  8.   */, b8 n' ]3 s6 x  V% Z( |7 B

  9. % O) t, [6 @: b: q8 {5 ]; e
  10. /** @defgroup DAC_interrupts_definition 9 W9 M7 N0 p6 _. w+ [
  11.   * @{' U& l# y! Z  N% L- C9 X
  12.   */   
    * t5 V: I. R9 K  r' c
  13. #define DAC_IT_DMAUDR                      ((uint32_t)0x00002000)  # W& T3 T' f  [
  14. #define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) 5 a  `0 w" n4 g, O  `! t
  15. 7 K! [" p. u" v; X
  16. /**
    % R2 ~5 c- G5 D  f( I& i
  17.   * @}
    % J! D  ^( _' Z- v
  18.   */
    $ D" \- ^+ z- f% g8 S

  19. ! L7 T8 X- @' }
  20. /** @defgroup DAC_flags_definition
    % n& P% |# x, s& g% r) ]
  21.   * @{2 b+ q& ^$ {3 H# N6 p& M% X
  22.   */ 0 V( Q: v# a9 o; X& R0 I

  23. 9 v! [+ [. D' e) ]
  24. #define DAC_FLAG_DMAUDR                    ((uint32_t)0x00002000)  * R4 {3 g6 I% a$ k$ |6 s7 Y
  25. #define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))  
复制代码

% b# g0 y" v' x( d03. 相关函数
1 u# j- t) X% m: C$ L1 o- Y& P
  1. /*  Function used to set the DAC configuration to the default reset state *****/  4 {) y% {: u: c6 H/ L1 O/ f
  2. void DAC_DeInit(void);  h, ~5 u3 a% Q7 j
  3. . K& E. j6 d) I: l$ p
  4. /*  DAC channels configuration: trigger, output buffer, data format functions */7 @8 p+ S( J) v  h
  5. void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
    * R3 X2 x5 w) y/ `
  6. void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);- f6 U8 `* ~7 X# V& g4 f: b
  7. void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);- U% Q& t" ?+ e; g1 C9 `
  8. void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);! |7 X7 F6 M  x- U
  9. void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);" l9 J% D( {: a* k2 a
  10. void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);. ?: l4 {: U/ R9 u2 E4 J
  11. void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);: v5 ]' H' z# @7 Q+ Z" K3 h/ J
  12. void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
    . H6 k( c% f8 |0 t% X# c! R+ g7 {
  13. void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);4 W" u: C8 h, n' b8 v: d
  14. uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);3 X. a% D/ ^& k5 b
  15. ' r) p& J; z+ z) ?% b+ ^  y
  16. /* DMA management functions ***************************************************/
    + l/ [. l3 c# I( P. _' b$ t( Q
  17. void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);
    * R+ e8 s. X& ^* J7 |

  18. 7 m7 G" e% W/ m; u+ K7 T& T3 w
  19. /* Interrupts and flags management functions **********************************/
    " T0 T5 z/ F' j" o, |6 n
  20. void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
    " y! g" M1 s; ~' h; r0 f9 _
  21. FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
    6 t2 c% Y( b. J$ \- F% z; b
  22. void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
    * E, L. B2 [* d3 D* D  ?. A" m" l9 B
  23. ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);. Z: M8 }, r, Z5 c( R
  24. void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
复制代码

# T& a9 e, W& ]$ `# r3 g, V04. 结构体封装
/ ]  S$ K4 r: U
  1. /**
      b! |0 o2 W5 d; u+ s( A) a
  2.   * @brief Digital to Analog Converter3 x* }0 s2 M. L; X. p& h( l
  3.   */( u) Z& A( ^# ^" v
  4. * W& [2 R' b* \
  5. typedef struct/ F# n; v+ p' P4 F; }# {$ N
  6. {" k. A9 ?$ B! d7 K7 Q
  7.   __IO uint32_t CR;       /*!< DAC control register,                                    Address offset: 0x00 */
    6 a, w0 Y$ @2 i7 A5 B' W- s
  8.   __IO uint32_t SWTRIGR;  /*!< DAC software trigger register,                           Address offset: 0x04 */' c2 i& S4 P& F2 x6 Z
  9.   __IO uint32_t DHR12R1;  /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
    + P8 b& R1 P& a: ?9 |: I) O
  10.   __IO uint32_t DHR12L1;  /*!< DAC channel1 12-bit left aligned data holding register,  Address offset: 0x0C */
    + n: B9 b+ M6 \- U/ ~1 f
  11.   __IO uint32_t DHR8R1;   /*!< DAC channel1 8-bit right aligned data holding register,  Address offset: 0x10 */
    6 ~" x1 P2 D6 n- H
  12.   __IO uint32_t DHR12R2;  /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
    $ r5 B% i: c; W; b* g( _
  13.   __IO uint32_t DHR12L2;  /*!< DAC channel2 12-bit left aligned data holding register,  Address offset: 0x18 */
    : e3 a1 \3 S! X' t
  14.   __IO uint32_t DHR8R2;   /*!< DAC channel2 8-bit right-aligned data holding register,  Address offset: 0x1C */
    . N) d3 K! \9 }5 g! c  n
  15.   __IO uint32_t DHR12RD;  /*!< Dual DAC 12-bit right-aligned data holding register,     Address offset: 0x20 */3 h* X% M" W' {7 E6 [$ w+ C6 E
  16.   __IO uint32_t DHR12LD;  /*!< DUAL DAC 12-bit left aligned data holding register,      Address offset: 0x24 */
    . x3 w8 _5 {- x6 W/ O* `  T5 W
  17.   __IO uint32_t DHR8RD;   /*!< DUAL DAC 8-bit right aligned data holding register,      Address offset: 0x28 */* Z' b1 u  l8 ~( K
  18.   __IO uint32_t DOR1;     /*!< DAC channel1 data output register,                       Address offset: 0x2C */
    ) c; U, z3 i( @
  19.   __IO uint32_t DOR2;     /*!< DAC channel2 data output register,                       Address offset: 0x30 */# S8 F# K- ^/ v( i
  20.   __IO uint32_t SR;       /*!< DAC status register,                                     Address offset: 0x34 */2 n. j) g9 T1 [( e- A
  21. } DAC_TypeDef;
复制代码

$ _! S7 B! p) ]* h. g9 ]
9 R+ n5 R/ [6 D$ a. j7 m6 k- W% f( y2 R) F; T6 q
赞 收藏 评论0 发布时间:2022-6-16 17:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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