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

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

[复制链接]
STMCU小助手 发布时间:2022-3-28 10:16
01. DAC简介: y) v- T7 c: v! R& M" B1 O" v
STM32F4的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下,2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个通道的输出。DAC 可以通过引脚输入参考电压 Vref+(通 ADC 共用)以获得更精确的转换结果。+ K: W. P1 a+ `& i  d: B' P
STM32F4 的 DAC 模块主要特点有:
% w& Z: g! t# y5 M- L2 E: o① 2 个 DAC 转换器:每个转换器对应 1 个输出通道
/ T$ j$ G: l; W) V3 o( l② 8 位或者 12 位单调输出9 q7 t7 ^" v. W; m3 e
③ 12 位模式下数据左对齐或者右对齐' L' Y( M6 x0 k
④ 同步更新功能
9 \5 x+ b' s* ^5 ]6 M7 H# u⑤ 噪声波形生成
3 K- W. s  b6 d  W⑥ 三角波形生成
5 a! A( r* X6 B* a, p7 ^* e! q⑦ 双 DAC 通道同时或者分别转换
, s( J& k$ ^. H( J3 e) n⑧ 每个通道都有 DMA 功能
5 }9 Y- [8 T2 N6 s4 e3 l& ^' I) k- J4 {9 o) i( `
02. 相关类型
1 ]2 a: g# h, Y1 L: e# gDAC Init structure" [) c7 w! R- ^( ?/ ^9 c
& x* M& C$ ]) t4 `' ^$ s
  1. /** $ L) |8 E! f0 ]' o5 }% h0 t
  2.   * @brief  DAC Init structure definition
    % i5 V* ?6 a) z0 I8 [& S$ m
  3.   */
    7 _0 S3 \* ], n
  4. # Z1 X& M2 |3 q
  5. typedef struct7 q3 M9 z% v, @" [& K8 _
  6. {3 U7 d. W6 P( ^, f% D
  7.   uint32_t DAC_Trigger;                      /*!< Specifies the external trigger for the selected DAC channel.
    ' g+ F& G& p# _3 V4 S
  8.                                                   This parameter can be a value of @ref DAC_trigger_selection */
    % q/ w6 {# ]5 }) K; R7 F3 [5 K0 K

  9. 9 _+ D' J; q5 T4 m; \
  10.   uint32_t DAC_WaveGeneration;               /*!< Specifies whether DAC channel noise waves or triangle waves
    $ h& o2 l5 f6 j
  11.                                                   are generated, or whether no wave is generated.
    * Z! p* y) r: K
  12.                                                   This parameter can be a value of @ref DAC_wave_generation */% r9 |; a) f: y5 M

  13. ' |* y: g' S( u5 B2 L- u
  14.   uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or
    " X' H. h( J5 ?4 c* m
  15.                                                   the maximum amplitude triangle generation for the DAC channel. + G0 {% y' G6 a# ]+ b3 `0 f. P+ f
  16.                                                   This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */
    5 m& q% _9 o6 n- Q( U
  17.   k7 p* C. q8 i" w" H8 X
  18.   uint32_t DAC_OutputBuffer;                 /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
    0 ^2 I; z6 S9 o' N% l
  19.                                                   This parameter can be a value of @ref DAC_output_buffer */5 w3 ?5 k! s2 |9 w( v7 S! |
  20. }DAC_InitTypeDef;
      r' x( N% V" l; L3 z' B
复制代码

7 \5 ]; O+ n8 m6 DDAC_trigger_selection
' R8 h6 w% p* i- P* B  }1 u
. W  m$ `  z6 O
  1. /** @defgroup DAC_trigger_selection
    8 b3 }& D( a) ]" K" }, {- m
  2.   * @{' M6 z. E2 m0 Q' }
  3.   */
    6 b$ W8 D2 e, _4 J4 G
  4. ! D1 Y: t7 W* Y, w+ l
  5. #define DAC_Trigger_None                   ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register
    ' C/ n! O: r+ y+ m$ D+ S
  6.                                                                        has been loaded, and not by external trigger */1 ~4 F/ K! {2 D
  7. #define DAC_Trigger_T2_TRGO                ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
    1 ]% B2 {% E, \2 n6 P
  8. #define DAC_Trigger_T4_TRGO                ((uint32_t)0x0000002C) /*!< TIM4 TRGO selected as external conversion trigger for DAC channel */1 H: ~4 ^1 \0 t! d! H
  9. #define DAC_Trigger_T5_TRGO                ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
    , k! D2 @. u6 [
  10. #define DAC_Trigger_T6_TRGO                ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */
    ) @2 E  K3 o0 J6 t. U
  11. #define DAC_Trigger_T7_TRGO                ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */. r' |4 `8 Z& {
  12. #define DAC_Trigger_T8_TRGO                ((uint32_t)0x0000000C) /*!< TIM8 TRGO selected as external conversion trigger for DAC channel */                                                                       & W* D! r. n. j# x( v$ I  ?: E
  13. 3 C2 S6 b/ P5 |' K; l- h9 T
  14. #define DAC_Trigger_Ext_IT9                ((uint32_t)0x00000034) /*!< EXTI Line9 event selected as external conversion trigger for DAC channel */; C( e/ C& J0 Q8 @. n; z* f: ]
  15. #define DAC_Trigger_Software               ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */
    0 c1 ~" A. ~9 F: i# u
  16. , _4 B* @1 Q! k: L$ y$ K, G4 x
  17. #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \2 G# W+ H4 {. j) Q; r
  18.                                  ((TRIGGER) == DAC_Trigger_T6_TRGO) || \. [  {% W5 c5 @6 s$ x& |
  19.                                  ((TRIGGER) == DAC_Trigger_T8_TRGO) || \3 R. H2 Q3 H  a5 w: V
  20.                                  ((TRIGGER) == DAC_Trigger_T7_TRGO) || \
    " Y  l* Y+ t% ?; W. l5 |0 z: T4 Q
  21.                                  ((TRIGGER) == DAC_Trigger_T5_TRGO) || \% p9 P( V; J! X; x) {6 Z! X9 }# @
  22.                                  ((TRIGGER) == DAC_Trigger_T2_TRGO) || \8 Z' k3 _1 p- I
  23.                                  ((TRIGGER) == DAC_Trigger_T4_TRGO) || \
    $ h0 a- h: n1 P/ @2 n% N$ _
  24.                                  ((TRIGGER) == DAC_Trigger_Ext_IT9) || \
    - O6 e7 w$ o: n* F% f% M
  25.                                  ((TRIGGER) == DAC_Trigger_Software)); \* r( P! h' D
复制代码
4 e' G% N6 W: y% U! n# b, _
DAC_wave_generation
5 K. G6 g. c3 ^& V) B/ i" i7 B( {% o8 y( @
  1. /** @defgroup DAC_wave_generation 9 `) |9 j/ G1 i) }4 e, H) F
  2.   * @{
    3 x9 S7 S% `/ p  r8 R0 N
  3.   */
    / x* ]$ Q, o7 b8 f& x3 S8 L
  4. 1 e8 s1 T2 E9 M' M- z+ Z+ [5 y" U& l
  5. #define DAC_WaveGeneration_None            ((uint32_t)0x00000000)  L# R7 q. t) r0 _
  6. #define DAC_WaveGeneration_Noise           ((uint32_t)0x00000040)1 Z8 L$ r; M* \! ^3 d8 Y
  7. #define DAC_WaveGeneration_Triangle        ((uint32_t)0x00000080)
    7 F/ d  @/ N) y3 z( R) J
  8. #define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \4 `6 V; [& S+ Z0 H7 }7 }' p
  9.                                     ((WAVE) == DAC_WaveGeneration_Noise) || \
    2 B$ o( M, _, g2 f+ M! S9 t- {; a0 {
  10.                                     ((WAVE) == DAC_WaveGeneration_Triangle))
复制代码
* p: T* Q8 ^: U; A% N0 \
DAC_lfsrunmask_triangleamplitude# a4 S0 ]* M, r; \! e/ X

: Y) a6 P* b1 L4 J7 c
  1. /** @defgroup DAC_lfsrunmask_triangleamplitude
    ' ~' h7 I- ?0 I& c% G# p
  2.   * @{
      h3 S1 O( K% Y% q& b
  3.   */
    " y' z; S; Y% j2 y
  4. + D# v2 t" q  ]- A
  5. #define DAC_LFSRUnmask_Bit0                ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */# I9 s9 l. a1 I' B4 X& Q
  6. #define DAC_LFSRUnmask_Bits1_0             ((uint32_t)0x00000100) /*!< Unmask DAC channel LFSR bit[1:0] for noise wave generation */
    9 @( O# N4 y, M% J7 L" H/ x9 x* x
  7. #define DAC_LFSRUnmask_Bits2_0             ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation *// H* m2 {- K9 E
  8. #define DAC_LFSRUnmask_Bits3_0             ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */9 @! @* E* j, z- L7 _1 X( ~
  9. #define DAC_LFSRUnmask_Bits4_0             ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */6 [2 ?% v/ p2 l
  10. #define DAC_LFSRUnmask_Bits5_0             ((uint32_t)0x00000500) /*!< Unmask DAC channel LFSR bit[5:0] for noise wave generation */3 n0 z4 D5 t, O, h% j# L
  11. #define DAC_LFSRUnmask_Bits6_0             ((uint32_t)0x00000600) /*!< Unmask DAC channel LFSR bit[6:0] for noise wave generation */8 [1 }+ s3 }5 G8 j! S0 M, r9 B6 {
  12. #define DAC_LFSRUnmask_Bits7_0             ((uint32_t)0x00000700) /*!< Unmask DAC channel LFSR bit[7:0] for noise wave generation */% W; I) [' }% n2 o3 p$ g0 I
  13. #define DAC_LFSRUnmask_Bits8_0             ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */) D8 S" V- s8 w' ~* i, p$ C6 m% P; h
  14. #define DAC_LFSRUnmask_Bits9_0             ((uint32_t)0x00000900) /*!< Unmask DAC channel LFSR bit[9:0] for noise wave generation */5 W" m* b0 k$ Q  y. \+ i7 u# H7 [7 Y: g' Y
  15. #define DAC_LFSRUnmask_Bits10_0            ((uint32_t)0x00000A00) /*!< Unmask DAC channel LFSR bit[10:0] for noise wave generation */0 s" P& Z- G# r. H+ m% L7 R
  16. #define DAC_LFSRUnmask_Bits11_0            ((uint32_t)0x00000B00) /*!< Unmask DAC channel LFSR bit[11:0] for noise wave generation */
    1 a3 M# P- N0 f% |2 R" t! K
  17. #define DAC_TriangleAmplitude_1            ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
    ( Q: `- v7 l- I& @8 h8 t% d
  18. #define DAC_TriangleAmplitude_3            ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */
    7 {5 e5 O+ |, E( ^; g! ~
  19. #define DAC_TriangleAmplitude_7            ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */! n7 A# E8 w% C
  20. #define DAC_TriangleAmplitude_15           ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */
    6 F$ X: r9 m, }# i8 x4 \7 |% ^% v
  21. #define DAC_TriangleAmplitude_31           ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */; u% u# c9 ?* f+ X% k2 V6 X
  22. #define DAC_TriangleAmplitude_63           ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */: a2 L5 H% ?  ~$ k; @$ s
  23. #define DAC_TriangleAmplitude_127          ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */
    4 ^4 e% h6 U, W" a* v
  24. #define DAC_TriangleAmplitude_255          ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */
    ( g- ]. q" B% m, X9 R# D
  25. #define DAC_TriangleAmplitude_511          ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */
    $ Q' ^8 N: N, g' m* M
  26. #define DAC_TriangleAmplitude_1023         ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 *// c! y& A8 _8 h% T" Z& z
  27. #define DAC_TriangleAmplitude_2047         ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
    ; v4 `# R1 s3 A, [3 V
  28. #define DAC_TriangleAmplitude_4095         ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
    8 P8 ?% L  ]. u- a2 i
  29. , L) t5 |4 z3 L7 N& \+ `; g. n
  30. #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
    2 X8 B' V! o& L" Z+ z
  31.                                                       ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \
    / J# Z0 N5 ^% |' a: L
  32.                                                       ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \
    + i4 N% Z. |# C+ Y
  33.                                                       ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \
    9 o; o/ g1 l+ [4 Q5 ^" E
  34.                                                       ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \. A( t; g3 c3 o4 _# a- T  L
  35.                                                       ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \2 h! @4 Z: r( w, S
  36.                                                       ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \
    * D. r5 i, b0 \' \
  37.                                                       ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
    $ D& \9 O% D- q) y
  38.                                                       ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
    5 n, B) o' F8 y: V7 l& C
  39.                                                       ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \5 j- f8 B0 l. ?
  40.                                                       ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \
    5 Z6 `/ {4 M9 B9 a, c% S
  41.                                                       ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \
    , K/ t) s6 c8 t, z6 J2 a
  42.                                                       ((VALUE) == DAC_TriangleAmplitude_1) || \, ], T# M/ x% |" L
  43.                                                       ((VALUE) == DAC_TriangleAmplitude_3) || \1 k& J1 f4 y& c1 ?7 U
  44.                                                       ((VALUE) == DAC_TriangleAmplitude_7) || \
    . u/ ?/ O" a- C# ?
  45.                                                       ((VALUE) == DAC_TriangleAmplitude_15) || \
    % q( i( D1 ]( h5 |3 `
  46.                                                       ((VALUE) == DAC_TriangleAmplitude_31) || \" ^: `; O% x: H, V9 }9 F
  47.                                                       ((VALUE) == DAC_TriangleAmplitude_63) || \
    ) v5 ]! j4 H) g8 b5 Q
  48.                                                       ((VALUE) == DAC_TriangleAmplitude_127) || \
    8 U# S& ~. N% M+ l8 B$ i! D
  49.                                                       ((VALUE) == DAC_TriangleAmplitude_255) || \
    9 q: C9 T3 n! O) e, a  |2 g
  50.                                                       ((VALUE) == DAC_TriangleAmplitude_511) || \
    2 V1 n( G7 z) ]  I0 g2 ~2 z$ T
  51.                                                       ((VALUE) == DAC_TriangleAmplitude_1023) || \
    2 o  R  o- R" w2 _* I, {
  52.                                                       ((VALUE) == DAC_TriangleAmplitude_2047) || \3 I, M  T8 j9 s5 H* F- o. [& b* o
  53.                                                       ((VALUE) == DAC_TriangleAmplitude_4095))1 W+ e$ Q* k* K
复制代码

. U8 x! ?( r. z* dDAC_output_buffer
0 b. e. o2 Z7 [) `1 o7 F
, _( {% p/ r! R5 d
  1. /** @defgroup DAC_output_buffer 2 c: M; X! C: j) g  m; M
  2.   * @{$ V6 g. `( O5 l- b" }( M, O9 O" n
  3.   */
    * K4 n, m" h. r1 u
  4. 5 E5 C; Q$ A. U" p
  5. #define DAC_OutputBuffer_Enable            ((uint32_t)0x00000000), G/ M8 m& x: a* B  Z
  6. #define DAC_OutputBuffer_Disable           ((uint32_t)0x00000002)
    # f. A5 s/ S9 T
  7. #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \) X) r$ {7 d$ a5 z, l
  8.                                            ((STATE) == DAC_OutputBuffer_Disable))
复制代码
1 y/ }  b( i9 v# D6 S
DAC_Channel_selection7 q. z  ~, b. @# h* c6 ~1 v3 R

4 A8 U. x$ \; Y" G. i( l3 k( C
  1. /** @defgroup DAC_Channel_selection 6 h! F( W! n; k3 \. w, u+ a
  2.   * @{
      M( L3 A+ p  @
  3.   */: y8 P6 Y& k$ Q
  4. ; y! M9 l3 i' o+ v
  5. #define DAC_Channel_1                      ((uint32_t)0x00000000)
    9 R# o% R, M; x; y
  6. #define DAC_Channel_2                      ((uint32_t)0x00000010)
    : J! u7 I, [/ e
  7. #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \- T: `; n9 I* |
  8.                                  ((CHANNEL) == DAC_Channel_2))
复制代码

3 D& }( W* A8 _0 B5 |DAC_data_alignement5 R/ B* C, C% ]! |

; N9 J" u1 o  N
  1. /** @defgroup DAC_data_alignement 0 c  [% f4 L* V" V0 L! j
  2.   * @{
    : ]& l" N1 c, Z6 H6 b
  3.   */
    ! c5 Z& F- D$ I/ `5 D
  4. ' b! p1 _4 [8 p3 M9 H: J1 A
  5. #define DAC_Align_12b_R                    ((uint32_t)0x00000000)
    9 M; Q! Z, G) T4 N1 c
  6. #define DAC_Align_12b_L                    ((uint32_t)0x00000004)
    9 I; J& ~  t" N% S9 Z- G
  7. #define DAC_Align_8b_R                     ((uint32_t)0x00000008)) J6 I0 E9 I$ z/ U& [7 u
  8. #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \0 s7 e& p3 y; o( I' a) T7 |
  9.                              ((ALIGN) == DAC_Align_12b_L) || \; w& j+ f' s( N- \
  10.                              ((ALIGN) == DAC_Align_8b_R))
复制代码
% Z$ N7 x; x, m0 `' d7 I9 [
DAC_wave_generation- S2 M( ~2 G; q' d8 j
9 q+ P' c1 m3 M0 m3 P
  1. /** @defgroup DAC_wave_generation ( l" i& w7 {  u. K5 x
  2.   * @{
    / P$ \8 d) \0 i( b/ V, y
  3.   */
    * p1 W4 t( K# J

  4. 0 H) l6 V; L" m0 V  L  X# J
  5. #define DAC_Wave_Noise                     ((uint32_t)0x00000040)) _& L1 t6 z  {1 S8 r1 O
  6. #define DAC_Wave_Triangle                  ((uint32_t)0x00000080)
    ; [6 Z1 [& v+ R9 Z4 W
  7. #define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \1 u2 S4 u$ R+ z" n+ v7 I
  8.                            ((WAVE) == DAC_Wave_Triangle))
复制代码

4 m& \$ a, Q; g2 l- w- E9 j其它
, x5 f5 ~5 o  `7 D2 O
$ D% a; H$ k: p
  1. /** @defgroup DAC_data
    3 r8 j" B  O2 w4 h5 v% u
  2.   * @{4 r# D' `% v% N) ?7 }. A' J' N$ o; }
  3.   */
    & B5 g+ b- W* l3 q/ C% C7 J

  4. * A% y  D8 G2 f7 {* A' K) [0 E. f
  5. #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) : L1 `  Y# T" k/ h) v5 [
  6. /**  ^! a: `1 D" T! w$ t- [+ |; C$ }
  7.   * @}
    ! G5 O) Y) z1 w! [% @3 a* b
  8.   */. O% l/ Y. A  L- [
  9. 6 {6 z! u, N2 G" W8 V' G6 j: e
  10. /** @defgroup DAC_interrupts_definition
    & k% t0 f0 O0 q+ Q0 {
  11.   * @{: C# U. Q4 O; d+ K' c
  12.   */   
    ( N% C, U) S  ~. Q
  13. #define DAC_IT_DMAUDR                      ((uint32_t)0x00002000)  ! n( `8 k. m; o& E4 I: }3 C3 `
  14. #define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) ( Y0 i4 n2 L6 }' C$ n% H5 [) [
  15. + @6 s3 i) z  h0 F( k: E
  16. /**& W$ ?7 E% g: K
  17.   * @}/ A- t, ]* c3 c; a. s, K2 [4 B, j
  18.   */ $ Y; g: ]& F9 K# M
  19. 2 H! A( j; X( @5 ]6 {" m4 U3 V
  20. /** @defgroup DAC_flags_definition
    ; `) ^, i; r1 ?* W
  21.   * @{" n, e, h! G$ _. i5 q" H
  22.   */ , X, L& L; d. |

  23. ( e4 S+ C% z0 O0 s' f
  24. #define DAC_FLAG_DMAUDR                    ((uint32_t)0x00002000)  
    5 E' `6 k: H8 i! Y1 x
  25. #define IS_DAC_FLAG(FLAG) (((FLAG) == DAC_FLAG_DMAUDR))  " B! B1 m0 M8 v: E- L
复制代码

& z4 h+ j( }+ I& f' N* k03. 相关函数1 ~; N+ r' _2 i' v4 \
  1. /*  Function used to set the DAC configuration to the default reset state *****/  : F9 X' ~% i7 d$ q. k$ o
  2. void DAC_DeInit(void);% @1 S. y( F; T5 p

  3. 7 z& ~1 X. C" B0 t1 E: u( _$ l
  4. /*  DAC channels configuration: trigger, output buffer, data format functions */
    + r. m- K/ J5 V) X4 q- G
  5. void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
    ) m) W; b2 L( d% a1 \2 l
  6. void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);
      J2 L3 U# a3 s/ G
  7. void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
    ! G& u. c* g4 |$ a
  8. void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);
    9 s" d, N0 B3 V
  9. void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);) k  J* [) |5 a0 k& K
  10. void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);$ i, i3 J& H! J2 o8 h$ ]2 J
  11. void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);2 ]+ [+ F! g# j8 A: c
  12. void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
    " y; n, n" V0 Y& L6 K( G- w
  13. void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);) U8 ?# {; f# E2 A, k9 Y& ?- L
  14. uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);: v2 _$ d9 Z# R; T2 F7 Q

  15. + I- y1 b( N, }# d0 [: x
  16. /* DMA management functions ***************************************************/6 f7 N( v5 R1 Y* g2 V' Z
  17. void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);4 V9 q% }% ^+ r4 H2 _2 U: W
  18. ; Z! ~! i1 D7 a5 H. C7 S
  19. /* Interrupts and flags management functions **********************************/
    ; J! m2 b- h+ g5 r) e& `# \
  20. void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
    0 y/ r! u3 ^3 {( g
  21. FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
      d# \, Q8 {! G) C
  22. void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
    2 h8 x2 ?" g# ^5 i/ U; n
  23. ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);+ u3 a) s: t1 k0 z, O- |
  24. void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
复制代码
- V/ [: W3 Q& \' t+ h# x
04. 结构体封装+ a# ~& n/ c2 b& e5 c1 T
  1. /** 3 Z% R6 c8 [9 M0 C* b* S
  2.   * @brief Digital to Analog Converter
    2 s9 @2 J/ e; t8 S" q
  3.   */
    ( D; C  ^+ F1 g. P$ h5 P

  4. " z. q: a! j9 U; a4 M
  5. typedef struct9 E* J! b5 Z9 N, k' \- Q" @) O# O3 }- @
  6. {
    , Z$ _+ ~& D  {
  7.   __IO uint32_t CR;       /*!< DAC control register,                                    Address offset: 0x00 */- U, |6 V( y* t
  8.   __IO uint32_t SWTRIGR;  /*!< DAC software trigger register,                           Address offset: 0x04 */$ |7 [9 F: n# O' f( m& |# F9 I
  9.   __IO uint32_t DHR12R1;  /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
    # N  l. u" z1 a# Y3 h% W4 W9 J
  10.   __IO uint32_t DHR12L1;  /*!< DAC channel1 12-bit left aligned data holding register,  Address offset: 0x0C */
    6 z% q, E; I( h1 q% P/ p- B! n
  11.   __IO uint32_t DHR8R1;   /*!< DAC channel1 8-bit right aligned data holding register,  Address offset: 0x10 */
    1 `- b' q/ I6 R+ m3 p) Q
  12.   __IO uint32_t DHR12R2;  /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
    4 f7 I3 m( z7 o/ C, H* h
  13.   __IO uint32_t DHR12L2;  /*!< DAC channel2 12-bit left aligned data holding register,  Address offset: 0x18 */
    $ x' Z0 s1 _6 D! k2 ^4 m# U% G
  14.   __IO uint32_t DHR8R2;   /*!< DAC channel2 8-bit right-aligned data holding register,  Address offset: 0x1C */
    * N: u/ U7 W3 i9 j+ U( B$ a& J+ F
  15.   __IO uint32_t DHR12RD;  /*!< Dual DAC 12-bit right-aligned data holding register,     Address offset: 0x20 */2 d1 Q) Q8 J1 w. g1 Q/ z7 F
  16.   __IO uint32_t DHR12LD;  /*!< DUAL DAC 12-bit left aligned data holding register,      Address offset: 0x24 */( n  x# x8 A& w" \
  17.   __IO uint32_t DHR8RD;   /*!< DUAL DAC 8-bit right aligned data holding register,      Address offset: 0x28 */: v, H) t* t9 v5 Z1 _
  18.   __IO uint32_t DOR1;     /*!< DAC channel1 data output register,                       Address offset: 0x2C */6 k3 L/ Q) _" m% h6 }. p
  19.   __IO uint32_t DOR2;     /*!< DAC channel2 data output register,                       Address offset: 0x30 */9 P% R+ j8 I3 Y
  20.   __IO uint32_t SR;       /*!< DAC status register,                                     Address offset: 0x34 */. P( |. z; N% o' C" j. B+ d- }
  21. } DAC_TypeDef;
复制代码

0 F" W9 g$ f) b8 d& o$ e( E" S: V) n: ?% v/ \
" z5 a( ], X# W7 l* J' R
赞 收藏 评论0 发布时间:2022-3-28 10:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

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