File indexing completed on 2025-05-11 08:23:35
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_DAC_H
0021 #define STM32H7xx_HAL_DAC_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028
0029
0030
0031
0032 #include "stm32h7xx_hal_def.h"
0033
0034 #if defined(DAC1) || defined(DAC2)
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 typedef enum
0051 {
0052 HAL_DAC_STATE_RESET = 0x00U,
0053 HAL_DAC_STATE_READY = 0x01U,
0054 HAL_DAC_STATE_BUSY = 0x02U,
0055 HAL_DAC_STATE_TIMEOUT = 0x03U,
0056 HAL_DAC_STATE_ERROR = 0x04U
0057
0058 } HAL_DAC_StateTypeDef;
0059
0060
0061
0062
0063 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0064 typedef struct __DAC_HandleTypeDef
0065 #else
0066 typedef struct
0067 #endif
0068 {
0069 DAC_TypeDef *Instance;
0070
0071 __IO HAL_DAC_StateTypeDef State;
0072
0073 HAL_LockTypeDef Lock;
0074
0075 DMA_HandleTypeDef *DMA_Handle1;
0076
0077 DMA_HandleTypeDef *DMA_Handle2;
0078
0079 __IO uint32_t ErrorCode;
0080
0081 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0082 void (* ConvCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
0083 void (* ConvHalfCpltCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
0084 void (* ErrorCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
0085 void (* DMAUnderrunCallbackCh1)(struct __DAC_HandleTypeDef *hdac);
0086
0087 void (* ConvCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
0088 void (* ConvHalfCpltCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
0089 void (* ErrorCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
0090 void (* DMAUnderrunCallbackCh2)(struct __DAC_HandleTypeDef *hdac);
0091
0092
0093 void (* MspInitCallback)(struct __DAC_HandleTypeDef *hdac);
0094 void (* MspDeInitCallback)(struct __DAC_HandleTypeDef *hdac);
0095 #endif
0096
0097 } DAC_HandleTypeDef;
0098
0099
0100
0101
0102 typedef struct
0103 {
0104 uint32_t DAC_SampleTime ;
0105
0106
0107
0108 uint32_t DAC_HoldTime ;
0109
0110
0111
0112 uint32_t DAC_RefreshTime ;
0113
0114
0115 } DAC_SampleAndHoldConfTypeDef;
0116
0117
0118
0119
0120 typedef struct
0121 {
0122 uint32_t DAC_SampleAndHold;
0123
0124
0125 uint32_t DAC_Trigger;
0126
0127
0128 uint32_t DAC_OutputBuffer;
0129
0130
0131 uint32_t DAC_ConnectOnChipPeripheral ;
0132
0133
0134 uint32_t DAC_UserTrimming;
0135
0136
0137
0138 uint32_t DAC_TrimmingValue;
0139
0140
0141 DAC_SampleAndHoldConfTypeDef DAC_SampleAndHoldConfig;
0142 } DAC_ChannelConfTypeDef;
0143
0144 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0145
0146
0147
0148 typedef enum
0149 {
0150 HAL_DAC_CH1_COMPLETE_CB_ID = 0x00U,
0151 HAL_DAC_CH1_HALF_COMPLETE_CB_ID = 0x01U,
0152 HAL_DAC_CH1_ERROR_ID = 0x02U,
0153 HAL_DAC_CH1_UNDERRUN_CB_ID = 0x03U,
0154
0155 HAL_DAC_CH2_COMPLETE_CB_ID = 0x04U,
0156 HAL_DAC_CH2_HALF_COMPLETE_CB_ID = 0x05U,
0157 HAL_DAC_CH2_ERROR_ID = 0x06U,
0158 HAL_DAC_CH2_UNDERRUN_CB_ID = 0x07U,
0159
0160 HAL_DAC_MSPINIT_CB_ID = 0x08U,
0161 HAL_DAC_MSPDEINIT_CB_ID = 0x09U,
0162 HAL_DAC_ALL_CB_ID = 0x0AU
0163 } HAL_DAC_CallbackIDTypeDef;
0164
0165
0166
0167
0168 typedef void (*pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac);
0169 #endif
0170
0171
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186 #define HAL_DAC_ERROR_NONE 0x00U
0187 #define HAL_DAC_ERROR_DMAUNDERRUNCH1 0x01U
0188 #define HAL_DAC_ERROR_DMAUNDERRUNCH2 0x02U
0189 #define HAL_DAC_ERROR_DMA 0x04U
0190 #define HAL_DAC_ERROR_TIMEOUT 0x08U
0191 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0192 #define HAL_DAC_ERROR_INVALID_CALLBACK 0x10U
0193 #endif
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203 #define DAC_TRIGGER_NONE 0x00000000U
0204 #define DAC_TRIGGER_SOFTWARE ( DAC_CR_TEN1)
0205 #define DAC_TRIGGER_T1_TRGO ( DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0206 #define DAC_TRIGGER_T2_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TEN1)
0207 #define DAC_TRIGGER_T4_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0208 #define DAC_TRIGGER_T5_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TEN1)
0209 #define DAC_TRIGGER_T6_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0210 #define DAC_TRIGGER_T7_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)
0211 #define DAC_TRIGGER_T8_TRGO ( DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0212 #define DAC_TRIGGER_T15_TRGO (DAC_CR_TSEL1_3 | DAC_CR_TEN1)
0213 #if defined(HRTIM1)
0214 #define DAC_TRIGGER_HR1_TRGO1 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0215 #define DAC_TRIGGER_HR1_TRGO2 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)
0216 #endif
0217 #define DAC_TRIGGER_LPTIM1_OUT (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0218 #define DAC_TRIGGER_LPTIM2_OUT (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TEN1)
0219 #define DAC_TRIGGER_EXT_IT9 (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0220 #if defined(TIM23)
0221 #define DAC_TRIGGER_T23_TRGO (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)
0222 #endif
0223 #if defined(TIM24)
0224 #define DAC_TRIGGER_T24_TRGO (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0 | DAC_CR_TEN1)
0225 #endif
0226 #if defined(DAC2)
0227 #define DAC_TRIGGER_LPTIM3_OUT (DAC_CR_TSEL1_3 | DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TEN1)
0228 #endif
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238 #define DAC_OUTPUTBUFFER_ENABLE 0x00000000U
0239 #define DAC_OUTPUTBUFFER_DISABLE (DAC_MCR_MODE1_1)
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249 #define DAC_CHANNEL_1 0x00000000U
0250
0251 #define DAC_CHANNEL_2 0x00000010U
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261 #define DAC_ALIGN_12B_R 0x00000000U
0262 #define DAC_ALIGN_12B_L 0x00000004U
0263 #define DAC_ALIGN_8B_R 0x00000008U
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273 #define DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1)
0274
0275 #define DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2)
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286 #define DAC_IT_DMAUDR1 (DAC_SR_DMAUDR1)
0287
0288 #define DAC_IT_DMAUDR2 (DAC_SR_DMAUDR2)
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299 #define DAC_CHIPCONNECT_EXTERNAL (1UL << 0)
0300 #define DAC_CHIPCONNECT_INTERNAL (1UL << 1)
0301 #define DAC_CHIPCONNECT_BOTH (1UL << 2)
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311 #define DAC_TRIMMING_FACTORY (0x00000000UL)
0312 #define DAC_TRIMMING_USER (0x00000001UL)
0313
0314
0315
0316
0317
0318
0319
0320
0321 #define DAC_SAMPLEANDHOLD_DISABLE (0x00000000UL)
0322 #define DAC_SAMPLEANDHOLD_ENABLE (DAC_MCR_MODE1_2)
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0343 #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) do { \
0344 (__HANDLE__)->State = HAL_DAC_STATE_RESET; \
0345 (__HANDLE__)->MspInitCallback = NULL; \
0346 (__HANDLE__)->MspDeInitCallback = NULL; \
0347 } while(0)
0348 #else
0349 #define __HAL_DAC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DAC_STATE_RESET)
0350 #endif
0351
0352
0353
0354
0355
0356
0357 #define __HAL_DAC_ENABLE(__HANDLE__, __DAC_Channel__) \
0358 ((__HANDLE__)->Instance->CR |= (DAC_CR_EN1 << ((__DAC_Channel__) & 0x10UL)))
0359
0360
0361
0362
0363
0364
0365 #define __HAL_DAC_DISABLE(__HANDLE__, __DAC_Channel__) \
0366 ((__HANDLE__)->Instance->CR &= ~(DAC_CR_EN1 << ((__DAC_Channel__) & 0x10UL)))
0367
0368
0369
0370
0371
0372 #define DAC_DHR12R1_ALIGNMENT(__ALIGNMENT__) (0x00000008UL + (__ALIGNMENT__))
0373
0374
0375
0376
0377
0378
0379 #define DAC_DHR12R2_ALIGNMENT(__ALIGNMENT__) (0x00000014UL + (__ALIGNMENT__))
0380
0381
0382
0383
0384
0385
0386 #define DAC_DHR12RD_ALIGNMENT(__ALIGNMENT__) (0x00000020UL + (__ALIGNMENT__))
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396 #define __HAL_DAC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) |= (__INTERRUPT__))
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406 #define __HAL_DAC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR) &= ~(__INTERRUPT__))
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416 #define __HAL_DAC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR\
0417 & (__INTERRUPT__)) == (__INTERRUPT__))
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427 #define __HAL_DAC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437 #define __HAL_DAC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = (__FLAG__))
0438
0439
0440
0441
0442
0443
0444
0445
0446
0447
0448
0449 #define IS_DAC_OUTPUT_BUFFER_STATE(STATE) (((STATE) == DAC_OUTPUTBUFFER_ENABLE) || \
0450 ((STATE) == DAC_OUTPUTBUFFER_DISABLE))
0451
0452 #define IS_DAC_CHANNEL(CHANNEL) (((CHANNEL) == DAC_CHANNEL_1) || \
0453 ((CHANNEL) == DAC_CHANNEL_2))
0454
0455 #define IS_DAC_ALIGN(ALIGN) (((ALIGN) == DAC_ALIGN_12B_R) || \
0456 ((ALIGN) == DAC_ALIGN_12B_L) || \
0457 ((ALIGN) == DAC_ALIGN_8B_R))
0458
0459 #define IS_DAC_DATA(DATA) ((DATA) <= 0xFFF0UL)
0460
0461 #define IS_DAC_REFRESHTIME(TIME) ((TIME) <= 0x000000FFUL)
0462
0463
0464
0465
0466
0467
0468 #include "stm32h7xx_hal_dac_ex.h"
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480 HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);
0481 HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac);
0482 void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac);
0483 void HAL_DAC_MspDeInit(DAC_HandleTypeDef *hdac);
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493 HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);
0494 HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);
0495 HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length,
0496 uint32_t Alignment);
0497 HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel);
0498 void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac);
0499 HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);
0500
0501 void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef *hdac);
0502 void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef *hdac);
0503 void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac);
0504 void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac);
0505
0506 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
0507
0508 HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID,
0509 pDAC_CallbackTypeDef pCallback);
0510 HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID);
0511 #endif
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521 uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel);
0522 HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac,
0523 const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel);
0524
0525
0526
0527
0528
0529
0530
0531
0532 HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac);
0533 uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac);
0534
0535
0536
0537
0538
0539
0540
0541
0542
0543
0544
0545
0546
0547 void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma);
0548 void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma);
0549 void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma);
0550
0551
0552
0553
0554
0555
0556
0557
0558 #endif
0559
0560
0561
0562
0563
0564 #ifdef __cplusplus
0565 }
0566 #endif
0567
0568
0569 #endif