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- /** 9 a7 T8 @4 U/ _' C
- * @brief DAC Init structure definition. M+ G7 I! M" `# C7 [) G
- */5 D& r* v( }+ ^8 q
- ) j; o: P( a8 h
- typedef struct
4 ?+ P6 @4 d& h& l' X - {
" G0 v! _% }$ ?( ]$ j - uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel.) e2 N) u; M6 W) \" C
- This parameter can be a value of @ref DAC_trigger_selection */1 P/ A7 K9 R3 h7 m0 G% x
- : q; n* _/ I% |1 B) A" f
- uint32_t DAC_WaveGeneration; /*!< Specifies whether DAC channel noise waves or triangle waves
# l: u4 d) Y$ O9 e9 N/ B7 R) ? - are generated, or whether no wave is generated.
/ b' k7 P* v! ]2 Z3 S* z7 b. f - This parameter can be a value of @ref DAC_wave_generation */, F7 S& V' d7 H( M5 W7 m
- + v1 O6 ~+ [6 r* O0 W. ~: g/ ?' q6 s: g
- uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or# N f4 f! v/ T
- the maximum amplitude triangle generation for the DAC channel. 5 N* H+ e( t: _9 V% U6 C
- This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */* ?, h, w8 t) y V$ P8 E
- 9 j$ F9 P/ E A. E6 ^
- uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled.8 |, W5 U; \, O; C+ [, G' M
- This parameter can be a value of @ref DAC_output_buffer */
. B9 d$ w6 b2 g$ y( u. r; u - }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
- /** @defgroup DAC_trigger_selection
0 @6 Z) J K5 H7 v - * @{" P6 @" t( G# I$ V, X' C
- */5 E8 G3 t$ k$ }% H( L& |1 }& T3 \
- ' o% X5 R% b: c6 i" m0 g0 `
- #define DAC_Trigger_None ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register + T& J; E' Q, U' H% G
- has been loaded, and not by external trigger */6 Z* N# t Q1 d* f
- #define DAC_Trigger_T2_TRGO ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
* H% H$ b) ^6 c3 ? - #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
- #define DAC_Trigger_T5_TRGO ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */+ K5 n0 E, `' f* _
- #define DAC_Trigger_T6_TRGO ((uint32_t)0x00000004) /*!< TIM6 TRGO selected as external conversion trigger for DAC channel */2 z" {6 Y9 {' G5 M
- #define DAC_Trigger_T7_TRGO ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */
6 l' K9 Q" `+ L" E - #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 - / I; T3 v/ y0 u" w: f; Y
- #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 - #define DAC_Trigger_Software ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */
; o8 [% b5 _+ O" ^6 I - . Y3 p9 b/ T! R3 Y! w" Y- _
- #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \0 E3 n1 j. F8 P; `9 I
- ((TRIGGER) == DAC_Trigger_T6_TRGO) || \' ?/ v) J i0 D& {0 m2 G# A2 w
- ((TRIGGER) == DAC_Trigger_T8_TRGO) || \
C3 A# C0 D, Z; x. R4 [ - ((TRIGGER) == DAC_Trigger_T7_TRGO) || \
- I7 h# w; D6 D0 s+ R' d! }. E C0 T - ((TRIGGER) == DAC_Trigger_T5_TRGO) || \
4 I% x4 `. \, d' d# K ~5 Z3 M8 [ - ((TRIGGER) == DAC_Trigger_T2_TRGO) || \% P3 D+ {+ T3 g. ]+ u/ h3 }' w
- ((TRIGGER) == DAC_Trigger_T4_TRGO) || \; y( y$ }" _* T' a# e5 C) p
- ((TRIGGER) == DAC_Trigger_Ext_IT9) || \$ f" Y8 N6 y& D6 D: L' h
- ((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- /** @defgroup DAC_wave_generation 6 \( Z+ k+ [/ u' X
- * @{( l$ F: ]3 ~! V! X. k
- */( F G4 a8 Q% F( t- Y/ k, W y( Z
6 f0 O, \8 Y) s- P: p7 `" U- #define DAC_WaveGeneration_None ((uint32_t)0x00000000)
4 f8 M) D+ @% [' m/ u - #define DAC_WaveGeneration_Noise ((uint32_t)0x00000040)
" K+ S% Y: I/ G3 | - #define DAC_WaveGeneration_Triangle ((uint32_t)0x00000080)7 Q/ X( C- r0 ?% k# b. [
- #define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \
' ]$ B6 w$ m% n% F6 P; [6 L2 e5 g3 f$ ] - ((WAVE) == DAC_WaveGeneration_Noise) || \4 ^3 N! y# k% {5 _8 s, s" P
- ((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 c d3 N# ^$ h, J4 j, d$ o; p- /** @defgroup DAC_lfsrunmask_triangleamplitude
" A. f* A: ?: ]# h/ @ - * @{5 j( i9 l2 j) o9 O" f/ o
- */
5 e S( S5 T5 o - . t i8 H0 h1 K; }
- #define DAC_LFSRUnmask_Bit0 ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */# u8 n1 k& ? _8 G# i# ]
- #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
- #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 - #define DAC_LFSRUnmask_Bits3_0 ((uint32_t)0x00000300) /*!< Unmask DAC channel LFSR bit[3:0] for noise wave generation */. C4 l' [. \7 ~) S
- #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, _
- #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
- #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 ? - #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 - #define DAC_LFSRUnmask_Bits8_0 ((uint32_t)0x00000800) /*!< Unmask DAC channel LFSR bit[8:0] for noise wave generation */
/ @! K6 H' {9 L - #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
- #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 - #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 @
- #define DAC_TriangleAmplitude_1 ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
8 _) K( ]; C" P) }% w+ W( `( `$ K - #define DAC_TriangleAmplitude_3 ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */4 e2 z* s5 t( H0 D2 F
- #define DAC_TriangleAmplitude_7 ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 *// |/ Q9 m( h# o% i8 s" h+ h! J
- #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 - #define DAC_TriangleAmplitude_31 ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */
8 D0 i! y/ U4 I9 d - #define DAC_TriangleAmplitude_63 ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */
) Z$ `4 L( V+ k& Z8 {2 [ m! X - #define DAC_TriangleAmplitude_127 ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */9 Q7 V. D5 V* ]! Z! Y
- #define DAC_TriangleAmplitude_255 ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */4 X$ S; c- \: T7 p2 \% f& I: {
- #define DAC_TriangleAmplitude_511 ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */, _+ j/ h& x- ~2 r: r
- #define DAC_TriangleAmplitude_1023 ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 */9 \! p& O4 K, ~+ n
- #define DAC_TriangleAmplitude_2047 ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
5 F- b8 Z; n& E. g+ M0 w) J - #define DAC_TriangleAmplitude_4095 ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
+ N( ]+ K' z) q! `% w5 p6 Y
6 _9 Q1 ~' x5 u- u- #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
/ Y2 N6 j' ]! o9 g8 u - ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \' M2 y3 ~. }9 _* T, [2 `1 Z
- ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \0 s' @) |8 n8 {& g# R: y- Q
- ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \( u( T$ H! r2 R7 K2 d' I. ~7 s! c4 d
- ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \: O6 C! U7 Q$ N- Y
- ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \2 h% I# O2 m; \
- ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \ ?1 \) }+ I, V' n2 r! |
- ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
: P* e' P1 E B" A8 P' S5 o6 V - ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
* a- s5 c, W: X - ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \4 o! w9 n. i; p Y% v# N$ Z
- ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \4 d& r }' O0 i. Z7 J$ g' [0 }
- ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \: H6 l6 g; @& h* h
- ((VALUE) == DAC_TriangleAmplitude_1) || \
# d2 X& y0 T; O: Z$ E0 L5 N4 |2 z - ((VALUE) == DAC_TriangleAmplitude_3) || \! G5 {7 @( C d; u( Y7 Y' q! e
- ((VALUE) == DAC_TriangleAmplitude_7) || \% b0 V, u, ]4 Z/ {
- ((VALUE) == DAC_TriangleAmplitude_15) || \
+ b* |4 R7 d! s - ((VALUE) == DAC_TriangleAmplitude_31) || \
3 ]) V" @; K1 i: w) i - ((VALUE) == DAC_TriangleAmplitude_63) || \( p; u% s7 R1 A2 O) Y
- ((VALUE) == DAC_TriangleAmplitude_127) || \
/ L! [! |) v$ A1 E% s - ((VALUE) == DAC_TriangleAmplitude_255) || \
3 A7 m3 l+ v1 J( A - ((VALUE) == DAC_TriangleAmplitude_511) || \7 t& D2 w- ]$ W
- ((VALUE) == DAC_TriangleAmplitude_1023) || \9 U: ?3 C; f2 R& B
- ((VALUE) == DAC_TriangleAmplitude_2047) || \
9 d" T' M# z. D' _ h - ((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- /** @defgroup DAC_output_buffer - y6 A& z9 ]4 k0 _5 m
- * @{
7 v0 a6 r0 ~4 h9 A) i, g - */
5 k! I5 }9 Y, s- S - - K7 p0 M" c; _0 z
- #define DAC_OutputBuffer_Enable ((uint32_t)0x00000000)
3 w; C* q0 O9 k; j) {% r* q - #define DAC_OutputBuffer_Disable ((uint32_t)0x00000002)! z* c, G$ o: L+ B1 w* p8 V
- #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \
0 {7 Z- _+ A6 V" F6 Q/ E2 N - ((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 ]
- /** @defgroup DAC_Channel_selection
: W* ^! Q; @4 |0 _ - * @{
7 S4 l$ Z9 g/ q R N, j - */
; M* A' G- A! K( Z3 M. z - & C8 \4 p& W$ t
- #define DAC_Channel_1 ((uint32_t)0x00000000)4 P* x& W! q4 T+ d$ f% y" }4 F
- #define DAC_Channel_2 ((uint32_t)0x00000010)
; e! V. A' j$ p" n" u - #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \* a2 {0 _* S" U
- ((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- /** @defgroup DAC_data_alignement
" B5 n. k) n3 w. ]2 S( E& ?6 q - * @{2 y7 l% I& p1 D! e M
- */
! Z4 B' j' g# D: F - 5 H9 k9 I& T3 a l0 n3 a" R1 O. K/ ~) o
- #define DAC_Align_12b_R ((uint32_t)0x00000000)
% f# W# c' h. S4 Z, e0 t - #define DAC_Align_12b_L ((uint32_t)0x00000004)
! T" D+ h1 W: E( E Q$ W - #define DAC_Align_8b_R ((uint32_t)0x00000008)4 K- F* N1 w2 i
- #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \
% N, L4 D4 B8 k* }5 ]2 O - ((ALIGN) == DAC_Align_12b_L) || \
) R4 O' H& {& m4 w0 y0 j: F1 K% Z - ((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
- /** @defgroup DAC_wave_generation * i3 h1 q: V) W. G
- * @{ U6 ^7 |6 n0 d& N8 d% T
- */6 ^. X0 o* P' y- U% [! `
- H) a2 C- v& {; m9 t; s- #define DAC_Wave_Noise ((uint32_t)0x00000040)
' ?0 t+ o) G3 o6 z7 a - #define DAC_Wave_Triangle ((uint32_t)0x00000080)' [' D: ~3 c1 V: D: [2 D
- #define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \
: T- ^* y4 U9 D+ e - ((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- /** @defgroup DAC_data , a T7 P4 G, }. o8 Z9 S3 ]
- * @{- l) F+ k; o6 v
- */
+ v w3 n6 a. X1 m
: T- b n, F* l5 w- #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0)
( Y3 n. H( s" B; U0 p ` - /**
$ r4 H2 s- a, i - * @}0 m7 ^& H4 l8 C2 x, ?
- */, b8 n' ]3 s6 x V% Z( |7 B
% O) t, [6 @: b: q8 {5 ]; e- /** @defgroup DAC_interrupts_definition 9 W9 M7 N0 p6 _. w+ [
- * @{' U& l# y! Z N% L- C9 X
- */
* t5 V: I. R9 K r' c - #define DAC_IT_DMAUDR ((uint32_t)0x00002000) # W& T3 T' f [
- #define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) 5 a `0 w" n4 g, O `! t
- 7 K! [" p. u" v; X
- /**
% R2 ~5 c- G5 D f( I& i - * @}
% J! D ^( _' Z- v - */
$ D" \- ^+ z- f% g8 S
! L7 T8 X- @' }- /** @defgroup DAC_flags_definition
% n& P% |# x, s& g% r) ] - * @{2 b+ q& ^$ {3 H# N6 p& M% X
- */ 0 V( Q: v# a9 o; X& R0 I
9 v! [+ [. D' e) ]- #define DAC_FLAG_DMAUDR ((uint32_t)0x00002000) * R4 {3 g6 I% a$ k$ |6 s7 Y
- #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- /* Function used to set the DAC configuration to the default reset state *****/ 4 {) y% {: u: c6 H/ L1 O/ f
- void DAC_DeInit(void); h, ~5 u3 a% Q7 j
- . K& E. j6 d) I: l$ p
- /* DAC channels configuration: trigger, output buffer, data format functions */7 @8 p+ S( J) v h
- void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
* R3 X2 x5 w) y/ ` - void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);- f6 U8 `* ~7 X# V& g4 f: b
- void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);- U% Q& t" ?+ e; g1 C9 `
- void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);! |7 X7 F6 M x- U
- void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);" l9 J% D( {: a* k2 a
- void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);. ?: l4 {: U/ R9 u2 E4 J
- void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);: v5 ]' H' z# @7 Q+ Z" K3 h/ J
- void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
. H6 k( c% f8 |0 t% X# c! R+ g7 { - void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);4 W" u: C8 h, n' b8 v: d
- uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);3 X. a% D/ ^& k5 b
- ' r) p& J; z+ z) ?% b+ ^ y
- /* DMA management functions ***************************************************/
+ l/ [. l3 c# I( P. _' b$ t( Q - void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);
* R+ e8 s. X& ^* J7 |
7 m7 G" e% W/ m; u+ K7 T& T3 w- /* Interrupts and flags management functions **********************************/
" T0 T5 z/ F' j" o, |6 n - void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
" y! g" M1 s; ~' h; r0 f9 _ - FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
6 t2 c% Y( b. J$ \- F% z; b - void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
* E, L. B2 [* d3 D* D ?. A" m" l9 B - ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);. Z: M8 }, r, Z5 c( R
- void DAC_ClearITPendingBit(uint32_t DAC_Channel, uint32_t DAC_IT);
复制代码
# T& a9 e, W& ]$ `# r3 g, V04. 结构体封装
/ ] S$ K4 r: U- /**
b! |0 o2 W5 d; u+ s( A) a - * @brief Digital to Analog Converter3 x* }0 s2 M. L; X. p& h( l
- */( u) Z& A( ^# ^" v
- * W& [2 R' b* \
- typedef struct/ F# n; v+ p' P4 F; }# {$ N
- {" k. A9 ?$ B! d7 K7 Q
- __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
6 a, w0 Y$ @2 i7 A5 B' W- s - __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */' c2 i& S4 P& F2 x6 Z
- __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ P8 b& R1 P& a: ?9 |: I) O - __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ n: B9 b+ M6 \- U/ ~1 f - __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
6 ~" x1 P2 D6 n- H - __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
$ r5 B% i: c; W; b* g( _ - __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
: e3 a1 \3 S! X' t - __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
. N) d3 K! \9 }5 g! c n - __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
- __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
. x3 w8 _5 {- x6 W/ O* ` T5 W - __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */* Z' b1 u l8 ~( K
- __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
) c; U, z3 i( @ - __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */# S8 F# K- ^/ v( i
- __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */2 n. j) g9 T1 [( e- A
- } DAC_TypeDef;
复制代码
$ _! S7 B! p) ]* h. g9 ]
9 R+ n5 R/ [6 D$ a. j7 m6 k- W% f( y2 R) F; T6 q
|