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
- /** $ L) |8 E! f0 ]' o5 }% h0 t
- * @brief DAC Init structure definition
% i5 V* ?6 a) z0 I8 [& S$ m - */
7 _0 S3 \* ], n - # Z1 X& M2 |3 q
- typedef struct7 q3 M9 z% v, @" [& K8 _
- {3 U7 d. W6 P( ^, f% D
- uint32_t DAC_Trigger; /*!< Specifies the external trigger for the selected DAC channel.
' g+ F& G& p# _3 V4 S - This parameter can be a value of @ref DAC_trigger_selection */
% q/ w6 {# ]5 }) K; R7 F3 [5 K0 K
9 _+ D' J; q5 T4 m; \- uint32_t DAC_WaveGeneration; /*!< Specifies whether DAC channel noise waves or triangle waves
$ h& o2 l5 f6 j - are generated, or whether no wave is generated.
* Z! p* y) r: K - This parameter can be a value of @ref DAC_wave_generation */% r9 |; a) f: y5 M
' |* y: g' S( u5 B2 L- u- uint32_t DAC_LFSRUnmask_TriangleAmplitude; /*!< Specifies the LFSR mask for noise wave generation or
" X' H. h( J5 ?4 c* m - the maximum amplitude triangle generation for the DAC channel. + G0 {% y' G6 a# ]+ b3 `0 f. P+ f
- This parameter can be a value of @ref DAC_lfsrunmask_triangleamplitude */
5 m& q% _9 o6 n- Q( U - k7 p* C. q8 i" w" H8 X
- uint32_t DAC_OutputBuffer; /*!< Specifies whether the DAC channel output buffer is enabled or disabled.
0 ^2 I; z6 S9 o' N% l - This parameter can be a value of @ref DAC_output_buffer */5 w3 ?5 k! s2 |9 w( v7 S! |
- }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- /** @defgroup DAC_trigger_selection
8 b3 }& D( a) ]" K" }, {- m - * @{' M6 z. E2 m0 Q' }
- */
6 b$ W8 D2 e, _4 J4 G - ! D1 Y: t7 W* Y, w+ l
- #define DAC_Trigger_None ((uint32_t)0x00000000) /*!< Conversion is automatic once the DAC1_DHRxxxx register
' C/ n! O: r+ y+ m$ D+ S - has been loaded, and not by external trigger */1 ~4 F/ K! {2 D
- #define DAC_Trigger_T2_TRGO ((uint32_t)0x00000024) /*!< TIM2 TRGO selected as external conversion trigger for DAC channel */
1 ]% B2 {% E, \2 n6 P - #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
- #define DAC_Trigger_T5_TRGO ((uint32_t)0x0000001C) /*!< TIM5 TRGO selected as external conversion trigger for DAC channel */
, k! D2 @. u6 [ - #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 - #define DAC_Trigger_T7_TRGO ((uint32_t)0x00000014) /*!< TIM7 TRGO selected as external conversion trigger for DAC channel */. r' |4 `8 Z& {
- #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
- 3 C2 S6 b/ P5 |' K; l- h9 T
- #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: ]
- #define DAC_Trigger_Software ((uint32_t)0x0000003C) /*!< Conversion started by software trigger for DAC channel */
0 c1 ~" A. ~9 F: i# u - , _4 B* @1 Q! k: L$ y$ K, G4 x
- #define IS_DAC_TRIGGER(TRIGGER) (((TRIGGER) == DAC_Trigger_None) || \2 G# W+ H4 {. j) Q; r
- ((TRIGGER) == DAC_Trigger_T6_TRGO) || \. [ {% W5 c5 @6 s$ x& |
- ((TRIGGER) == DAC_Trigger_T8_TRGO) || \3 R. H2 Q3 H a5 w: V
- ((TRIGGER) == DAC_Trigger_T7_TRGO) || \
" Y l* Y+ t% ?; W. l5 |0 z: T4 Q - ((TRIGGER) == DAC_Trigger_T5_TRGO) || \% p9 P( V; J! X; x) {6 Z! X9 }# @
- ((TRIGGER) == DAC_Trigger_T2_TRGO) || \8 Z' k3 _1 p- I
- ((TRIGGER) == DAC_Trigger_T4_TRGO) || \
$ h0 a- h: n1 P/ @2 n% N$ _ - ((TRIGGER) == DAC_Trigger_Ext_IT9) || \
- O6 e7 w$ o: n* F% f% M - ((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( @
- /** @defgroup DAC_wave_generation 9 `) |9 j/ G1 i) }4 e, H) F
- * @{
3 x9 S7 S% `/ p r8 R0 N - */
/ x* ]$ Q, o7 b8 f& x3 S8 L - 1 e8 s1 T2 E9 M' M- z+ Z+ [5 y" U& l
- #define DAC_WaveGeneration_None ((uint32_t)0x00000000) L# R7 q. t) r0 _
- #define DAC_WaveGeneration_Noise ((uint32_t)0x00000040)1 Z8 L$ r; M* \! ^3 d8 Y
- #define DAC_WaveGeneration_Triangle ((uint32_t)0x00000080)
7 F/ d @/ N) y3 z( R) J - #define IS_DAC_GENERATE_WAVE(WAVE) (((WAVE) == DAC_WaveGeneration_None) || \4 `6 V; [& S+ Z0 H7 }7 }' p
- ((WAVE) == DAC_WaveGeneration_Noise) || \
2 B$ o( M, _, g2 f+ M! S9 t- {; a0 { - ((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- /** @defgroup DAC_lfsrunmask_triangleamplitude
' ~' h7 I- ?0 I& c% G# p - * @{
h3 S1 O( K% Y% q& b - */
" y' z; S; Y% j2 y - + D# v2 t" q ]- A
- #define DAC_LFSRUnmask_Bit0 ((uint32_t)0x00000000) /*!< Unmask DAC channel LFSR bit0 for noise wave generation */# I9 s9 l. a1 I' B4 X& Q
- #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 - #define DAC_LFSRUnmask_Bits2_0 ((uint32_t)0x00000200) /*!< Unmask DAC channel LFSR bit[2:0] for noise wave generation *// H* m2 {- K9 E
- #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( ~
- #define DAC_LFSRUnmask_Bits4_0 ((uint32_t)0x00000400) /*!< Unmask DAC channel LFSR bit[4:0] for noise wave generation */6 [2 ?% v/ p2 l
- #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
- #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 {
- #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
- #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
- #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
- #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
- #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 - #define DAC_TriangleAmplitude_1 ((uint32_t)0x00000000) /*!< Select max triangle amplitude of 1 */
( Q: `- v7 l- I& @8 h8 t% d - #define DAC_TriangleAmplitude_3 ((uint32_t)0x00000100) /*!< Select max triangle amplitude of 3 */
7 {5 e5 O+ |, E( ^; g! ~ - #define DAC_TriangleAmplitude_7 ((uint32_t)0x00000200) /*!< Select max triangle amplitude of 7 */! n7 A# E8 w% C
- #define DAC_TriangleAmplitude_15 ((uint32_t)0x00000300) /*!< Select max triangle amplitude of 15 */
6 F$ X: r9 m, }# i8 x4 \7 |% ^% v - #define DAC_TriangleAmplitude_31 ((uint32_t)0x00000400) /*!< Select max triangle amplitude of 31 */; u% u# c9 ?* f+ X% k2 V6 X
- #define DAC_TriangleAmplitude_63 ((uint32_t)0x00000500) /*!< Select max triangle amplitude of 63 */: a2 L5 H% ? ~$ k; @$ s
- #define DAC_TriangleAmplitude_127 ((uint32_t)0x00000600) /*!< Select max triangle amplitude of 127 */
4 ^4 e% h6 U, W" a* v - #define DAC_TriangleAmplitude_255 ((uint32_t)0x00000700) /*!< Select max triangle amplitude of 255 */
( g- ]. q" B% m, X9 R# D - #define DAC_TriangleAmplitude_511 ((uint32_t)0x00000800) /*!< Select max triangle amplitude of 511 */
$ Q' ^8 N: N, g' m* M - #define DAC_TriangleAmplitude_1023 ((uint32_t)0x00000900) /*!< Select max triangle amplitude of 1023 *// c! y& A8 _8 h% T" Z& z
- #define DAC_TriangleAmplitude_2047 ((uint32_t)0x00000A00) /*!< Select max triangle amplitude of 2047 */
; v4 `# R1 s3 A, [3 V - #define DAC_TriangleAmplitude_4095 ((uint32_t)0x00000B00) /*!< Select max triangle amplitude of 4095 */
8 P8 ?% L ]. u- a2 i - , L) t5 |4 z3 L7 N& \+ `; g. n
- #define IS_DAC_LFSR_UNMASK_TRIANGLE_AMPLITUDE(VALUE) (((VALUE) == DAC_LFSRUnmask_Bit0) || \
2 X8 B' V! o& L" Z+ z - ((VALUE) == DAC_LFSRUnmask_Bits1_0) || \
/ J# Z0 N5 ^% |' a: L - ((VALUE) == DAC_LFSRUnmask_Bits2_0) || \
+ i4 N% Z. |# C+ Y - ((VALUE) == DAC_LFSRUnmask_Bits3_0) || \
9 o; o/ g1 l+ [4 Q5 ^" E - ((VALUE) == DAC_LFSRUnmask_Bits4_0) || \. A( t; g3 c3 o4 _# a- T L
- ((VALUE) == DAC_LFSRUnmask_Bits5_0) || \2 h! @4 Z: r( w, S
- ((VALUE) == DAC_LFSRUnmask_Bits6_0) || \
* D. r5 i, b0 \' \ - ((VALUE) == DAC_LFSRUnmask_Bits7_0) || \
$ D& \9 O% D- q) y - ((VALUE) == DAC_LFSRUnmask_Bits8_0) || \
5 n, B) o' F8 y: V7 l& C - ((VALUE) == DAC_LFSRUnmask_Bits9_0) || \5 j- f8 B0 l. ?
- ((VALUE) == DAC_LFSRUnmask_Bits10_0) || \
5 Z6 `/ {4 M9 B9 a, c% S - ((VALUE) == DAC_LFSRUnmask_Bits11_0) || \
, K/ t) s6 c8 t, z6 J2 a - ((VALUE) == DAC_TriangleAmplitude_1) || \, ], T# M/ x% |" L
- ((VALUE) == DAC_TriangleAmplitude_3) || \1 k& J1 f4 y& c1 ?7 U
- ((VALUE) == DAC_TriangleAmplitude_7) || \
. u/ ?/ O" a- C# ? - ((VALUE) == DAC_TriangleAmplitude_15) || \
% q( i( D1 ]( h5 |3 ` - ((VALUE) == DAC_TriangleAmplitude_31) || \" ^: `; O% x: H, V9 }9 F
- ((VALUE) == DAC_TriangleAmplitude_63) || \
) v5 ]! j4 H) g8 b5 Q - ((VALUE) == DAC_TriangleAmplitude_127) || \
8 U# S& ~. N% M+ l8 B$ i! D - ((VALUE) == DAC_TriangleAmplitude_255) || \
9 q: C9 T3 n! O) e, a |2 g - ((VALUE) == DAC_TriangleAmplitude_511) || \
2 V1 n( G7 z) ] I0 g2 ~2 z$ T - ((VALUE) == DAC_TriangleAmplitude_1023) || \
2 o R o- R" w2 _* I, { - ((VALUE) == DAC_TriangleAmplitude_2047) || \3 I, M T8 j9 s5 H* F- o. [& b* o
- ((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- /** @defgroup DAC_output_buffer 2 c: M; X! C: j) g m; M
- * @{$ V6 g. `( O5 l- b" }( M, O9 O" n
- */
* K4 n, m" h. r1 u - 5 E5 C; Q$ A. U" p
- #define DAC_OutputBuffer_Enable ((uint32_t)0x00000000), G/ M8 m& x: a* B Z
- #define DAC_OutputBuffer_Disable ((uint32_t)0x00000002)
# f. A5 s/ S9 T - #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OutputBuffer_Enable) || \) X) r$ {7 d$ a5 z, l
- ((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- /** @defgroup DAC_Channel_selection 6 h! F( W! n; k3 \. w, u+ a
- * @{
M( L3 A+ p @ - */: y8 P6 Y& k$ Q
- ; y! M9 l3 i' o+ v
- #define DAC_Channel_1 ((uint32_t)0x00000000)
9 R# o% R, M; x; y - #define DAC_Channel_2 ((uint32_t)0x00000010)
: J! u7 I, [/ e - #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_Channel_1) || \- T: `; n9 I* |
- ((CHANNEL) == DAC_Channel_2))
复制代码
3 D& }( W* A8 _0 B5 |DAC_data_alignement5 R/ B* C, C% ]! |
; N9 J" u1 o N- /** @defgroup DAC_data_alignement 0 c [% f4 L* V" V0 L! j
- * @{
: ]& l" N1 c, Z6 H6 b - */
! c5 Z& F- D$ I/ `5 D - ' b! p1 _4 [8 p3 M9 H: J1 A
- #define DAC_Align_12b_R ((uint32_t)0x00000000)
9 M; Q! Z, G) T4 N1 c - #define DAC_Align_12b_L ((uint32_t)0x00000004)
9 I; J& ~ t" N% S9 Z- G - #define DAC_Align_8b_R ((uint32_t)0x00000008)) J6 I0 E9 I$ z/ U& [7 u
- #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_Align_12b_R) || \0 s7 e& p3 y; o( I' a) T7 |
- ((ALIGN) == DAC_Align_12b_L) || \; w& j+ f' s( N- \
- ((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
- /** @defgroup DAC_wave_generation ( l" i& w7 { u. K5 x
- * @{
/ P$ \8 d) \0 i( b/ V, y - */
* p1 W4 t( K# J
0 H) l6 V; L" m0 V L X# J- #define DAC_Wave_Noise ((uint32_t)0x00000040)) _& L1 t6 z {1 S8 r1 O
- #define DAC_Wave_Triangle ((uint32_t)0x00000080)
; [6 Z1 [& v+ R9 Z4 W - #define IS_DAC_WAVE(WAVE) (((WAVE) == DAC_Wave_Noise) || \1 u2 S4 u$ R+ z" n+ v7 I
- ((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
- /** @defgroup DAC_data
3 r8 j" B O2 w4 h5 v% u - * @{4 r# D' `% v% N) ?7 }. A' J' N$ o; }
- */
& B5 g+ b- W* l3 q/ C% C7 J
* A% y D8 G2 f7 {* A' K) [0 E. f- #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0) : L1 ` Y# T" k/ h) v5 [
- /** ^! a: `1 D" T! w$ t- [+ |; C$ }
- * @}
! G5 O) Y) z1 w! [% @3 a* b - */. O% l/ Y. A L- [
- 6 {6 z! u, N2 G" W8 V' G6 j: e
- /** @defgroup DAC_interrupts_definition
& k% t0 f0 O0 q+ Q0 { - * @{: C# U. Q4 O; d+ K' c
- */
( N% C, U) S ~. Q - #define DAC_IT_DMAUDR ((uint32_t)0x00002000) ! n( `8 k. m; o& E4 I: }3 C3 `
- #define IS_DAC_IT(IT) (((IT) == DAC_IT_DMAUDR)) ( Y0 i4 n2 L6 }' C$ n% H5 [) [
- + @6 s3 i) z h0 F( k: E
- /**& W$ ?7 E% g: K
- * @}/ A- t, ]* c3 c; a. s, K2 [4 B, j
- */ $ Y; g: ]& F9 K# M
- 2 H! A( j; X( @5 ]6 {" m4 U3 V
- /** @defgroup DAC_flags_definition
; `) ^, i; r1 ?* W - * @{" n, e, h! G$ _. i5 q" H
- */ , X, L& L; d. |
( e4 S+ C% z0 O0 s' f- #define DAC_FLAG_DMAUDR ((uint32_t)0x00002000)
5 E' `6 k: H8 i! Y1 x - #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 \
- /* Function used to set the DAC configuration to the default reset state *****/ : F9 X' ~% i7 d$ q. k$ o
- void DAC_DeInit(void);% @1 S. y( F; T5 p
7 z& ~1 X. C" B0 t1 E: u( _$ l- /* DAC channels configuration: trigger, output buffer, data format functions */
+ r. m- K/ J5 V) X4 q- G - void DAC_Init(uint32_t DAC_Channel, DAC_InitTypeDef* DAC_InitStruct);
) m) W; b2 L( d% a1 \2 l - void DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct);
J2 L3 U# a3 s/ G - void DAC_Cmd(uint32_t DAC_Channel, FunctionalState NewState);
! G& u. c* g4 |$ a - void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState);
9 s" d, N0 B3 V - void DAC_DualSoftwareTriggerCmd(FunctionalState NewState);) k J* [) |5 a0 k& K
- void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState);$ i, i3 J& H! J2 o8 h$ ]2 J
- void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_t Data);2 ]+ [+ F! g# j8 A: c
- void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_t Data);
" y; n, n" V0 Y& L6 K( G- w - void DAC_SetDualChannelData(uint32_t DAC_Align, uint16_t Data2, uint16_t Data1);) U8 ?# {; f# E2 A, k9 Y& ?- L
- uint16_t DAC_GetDataOutputValue(uint32_t DAC_Channel);: v2 _$ d9 Z# R; T2 F7 Q
+ I- y1 b( N, }# d0 [: x- /* DMA management functions ***************************************************/6 f7 N( v5 R1 Y* g2 V' Z
- void DAC_DMACmd(uint32_t DAC_Channel, FunctionalState NewState);4 V9 q% }% ^+ r4 H2 _2 U: W
- ; Z! ~! i1 D7 a5 H. C7 S
- /* Interrupts and flags management functions **********************************/
; J! m2 b- h+ g5 r) e& `# \ - void DAC_ITConfig(uint32_t DAC_Channel, uint32_t DAC_IT, FunctionalState NewState);
0 y/ r! u3 ^3 {( g - FlagStatus DAC_GetFlagStatus(uint32_t DAC_Channel, uint32_t DAC_FLAG);
d# \, Q8 {! G) C - void DAC_ClearFlag(uint32_t DAC_Channel, uint32_t DAC_FLAG);
2 h8 x2 ?" g# ^5 i/ U; n - ITStatus DAC_GetITStatus(uint32_t DAC_Channel, uint32_t DAC_IT);+ u3 a) s: t1 k0 z, O- |
- 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
- /** 3 Z% R6 c8 [9 M0 C* b* S
- * @brief Digital to Analog Converter
2 s9 @2 J/ e; t8 S" q - */
( D; C ^+ F1 g. P$ h5 P
" z. q: a! j9 U; a4 M- typedef struct9 E* J! b5 Z9 N, k' \- Q" @) O# O3 }- @
- {
, Z$ _+ ~& D { - __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */- U, |6 V( y* t
- __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */$ |7 [9 F: n# O' f( m& |# F9 I
- __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 - __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 - __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
1 `- b' q/ I6 R+ m3 p) Q - __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 - __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 - __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 - __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
- __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */( n x# x8 A& w" \
- __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */: v, H) t* t9 v5 Z1 _
- __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */6 k3 L/ Q) _" m% h6 }. p
- __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */9 P% R+ j8 I3 Y
- __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */. P( |. z; N% o' C" j. B+ d- }
- } DAC_TypeDef;
复制代码
0 F" W9 g$ f) b8 d& o$ e( E" S: V) n: ?% v/ \
" z5 a( ], X# W7 l* J' R
|