229#ifdef HAL_DAC_MODULE_ENABLED
281 if (hdac->State == HAL_DAC_STATE_RESET)
283#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
285 hdac->ConvCpltCallbackCh1 = HAL_DAC_ConvCpltCallbackCh1;
286 hdac->ConvHalfCpltCallbackCh1 = HAL_DAC_ConvHalfCpltCallbackCh1;
287 hdac->ErrorCallbackCh1 = HAL_DAC_ErrorCallbackCh1;
288 hdac->DMAUnderrunCallbackCh1 = HAL_DAC_DMAUnderrunCallbackCh1;
289#if defined(DAC_CHANNEL2_SUPPORT)
290 hdac->ConvCpltCallbackCh2 = HAL_DACEx_ConvCpltCallbackCh2;
291 hdac->ConvHalfCpltCallbackCh2 = HAL_DACEx_ConvHalfCpltCallbackCh2;
292 hdac->ErrorCallbackCh2 = HAL_DACEx_ErrorCallbackCh2;
293 hdac->DMAUnderrunCallbackCh2 = HAL_DACEx_DMAUnderrunCallbackCh2;
295 if (hdac->MspInitCallback == NULL)
297 hdac->MspInitCallback = HAL_DAC_MspInit;
304#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
306 hdac->MspInitCallback(hdac);
309 HAL_DAC_MspInit(hdac);
314 hdac->State = HAL_DAC_STATE_BUSY;
317 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
320 hdac->State = HAL_DAC_STATE_READY;
344 hdac->State = HAL_DAC_STATE_BUSY;
346#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
347 if (hdac->MspDeInitCallback == NULL)
349 hdac->MspDeInitCallback = HAL_DAC_MspDeInit;
352 hdac->MspDeInitCallback(hdac);
355 HAL_DAC_MspDeInit(hdac);
359 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
362 hdac->State = HAL_DAC_STATE_RESET;
377__weak
void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
393__weak
void HAL_DAC_MspDeInit(DAC_HandleTypeDef *hdac)
450 hdac->State = HAL_DAC_STATE_BUSY;
453 __HAL_DAC_ENABLE(hdac, Channel);
455 if (Channel == DAC_CHANNEL_1)
458 if ((hdac->Instance->CR & (DAC_CR_TEN1 | DAC_CR_TSEL1)) == DAC_TRIGGER_SOFTWARE)
461 SET_BIT(hdac->Instance->SWTRIGR, DAC_SWTRIGR_SWTRIG1);
464#if defined(DAC_CHANNEL2_SUPPORT)
468 if ((hdac->Instance->CR & (DAC_CR_TEN2 | DAC_CR_TSEL2)) == (DAC_TRIGGER_SOFTWARE << (Channel & 0x10UL)))
471 SET_BIT(hdac->Instance->SWTRIGR, DAC_SWTRIGR_SWTRIG2);
477 hdac->State = HAL_DAC_STATE_READY;
508 __HAL_DAC_DISABLE(hdac, Channel);
511 hdac->State = HAL_DAC_STATE_READY;
534HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel,
const uint32_t *pData, uint32_t Length,
537#if defined(DAC_CHANNEL2_SUPPORT)
558 hdac->State = HAL_DAC_STATE_BUSY;
560 if (Channel == DAC_CHANNEL_1)
563 hdac->DMA_Handle1->XferCpltCallback = DAC_DMAConvCpltCh1;
566 hdac->DMA_Handle1->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh1;
569 hdac->DMA_Handle1->XferErrorCallback = DAC_DMAErrorCh1;
572 SET_BIT(hdac->Instance->CR, DAC_CR_DMAEN1);
577 case DAC_ALIGN_12B_R:
579 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
581 case DAC_ALIGN_12B_L:
583 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
587 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
591#if defined(DAC_CHANNEL2_SUPPORT)
595 hdac->DMA_Handle2->XferCpltCallback = DAC_DMAConvCpltCh2;
598 hdac->DMA_Handle2->XferHalfCpltCallback = DAC_DMAHalfConvCpltCh2;
601 hdac->DMA_Handle2->XferErrorCallback = DAC_DMAErrorCh2;
604 SET_BIT(hdac->Instance->CR, DAC_CR_DMAEN2);
609 case DAC_ALIGN_12B_R:
611 tmpreg = (uint32_t)&hdac->Instance->DHR12R2;
613 case DAC_ALIGN_12B_L:
615 tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
619 tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
624 if (Channel == DAC_CHANNEL_1)
627 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
630 status =
HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
632#if defined(DAC_CHANNEL2_SUPPORT)
636 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR2);
639 status =
HAL_DMA_Start_IT(hdac->DMA_Handle2, (uint32_t)pData, tmpreg, Length);
649 __HAL_DAC_ENABLE(hdac, Channel);
653 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
682 hdac->Instance->CR &= ~(DAC_CR_DMAEN1 << (Channel & 0x10UL));
685 __HAL_DAC_DISABLE(hdac, Channel);
690 if (Channel == DAC_CHANNEL_1)
696 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR1);
698#if defined(DAC_CHANNEL2_SUPPORT)
705 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR2);
710 hdac->State = HAL_DAC_STATE_READY;
724void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac)
726 uint32_t itsource = hdac->Instance->CR;
727 uint32_t itflag = hdac->Instance->SR;
729 if ((itsource & DAC_IT_DMAUDR1) == DAC_IT_DMAUDR1)
732 if ((itflag & DAC_FLAG_DMAUDR1) == DAC_FLAG_DMAUDR1)
735 hdac->State = HAL_DAC_STATE_ERROR;
738 SET_BIT(hdac->ErrorCode, HAL_DAC_ERROR_DMAUNDERRUNCH1);
741 __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR1);
744 __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN1);
747#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
748 hdac->DMAUnderrunCallbackCh1(hdac);
750 HAL_DAC_DMAUnderrunCallbackCh1(hdac);
755#if defined(DAC_CHANNEL2_SUPPORT)
756 if ((itsource & DAC_IT_DMAUDR2) == DAC_IT_DMAUDR2)
759 if ((itflag & DAC_FLAG_DMAUDR2) == DAC_FLAG_DMAUDR2)
762 hdac->State = HAL_DAC_STATE_ERROR;
765 SET_BIT(hdac->ErrorCode, HAL_DAC_ERROR_DMAUNDERRUNCH2);
768 __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR2);
771 __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN2);
774#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
775 hdac->DMAUnderrunCallbackCh2(hdac);
777 HAL_DACEx_DMAUnderrunCallbackCh2(hdac);
800HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
802 __IO uint32_t tmp = 0UL;
815 tmp = (uint32_t)hdac->Instance;
816 if (Channel == DAC_CHANNEL_1)
818 tmp += DAC_DHR12R1_ALIGNMENT(Alignment);
820#if defined(DAC_CHANNEL2_SUPPORT)
823 tmp += DAC_DHR12R2_ALIGNMENT(Alignment);
828 *(__IO uint32_t *) tmp = Data;
840__weak
void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef *hdac)
856__weak
void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef *hdac)
872__weak
void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
888__weak
void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
927uint32_t HAL_DAC_GetValue(
const DAC_HandleTypeDef *hdac, uint32_t Channel)
937 if (Channel == DAC_CHANNEL_1)
939 result = hdac->Instance->DOR1;
941#if defined(DAC_CHANNEL2_SUPPORT)
944 result = hdac->Instance->DOR2;
963 const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel)
970 if ((hdac == NULL) || (sConfig == NULL))
977 assert_param(IS_DAC_OUTPUT_BUFFER_STATE(sConfig->DAC_OutputBuffer));
984 hdac->State = HAL_DAC_STATE_BUSY;
987 tmpreg1 = hdac->Instance->CR;
989 tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1))
990 << (Channel & 0x10UL));
994 tmpreg2 = (sConfig->DAC_Trigger | sConfig->DAC_OutputBuffer);
996 tmpreg1 |= tmpreg2 << (Channel & 0x10UL);
998 hdac->Instance->CR = tmpreg1;
1000 CLEAR_BIT(hdac->Instance->CR, (DAC_CR_WAVE1 << (Channel & 0x10UL)));
1003 hdac->State = HAL_DAC_STATE_READY;
1038HAL_DAC_StateTypeDef HAL_DAC_GetState(
const DAC_HandleTypeDef *hdac)
1051uint32_t HAL_DAC_GetError(
const DAC_HandleTypeDef *hdac)
1053 return hdac->ErrorCode;
1071#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1095HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID,
1096 pDAC_CallbackTypeDef pCallback)
1106 if (pCallback == NULL)
1109 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1113 if (hdac->State == HAL_DAC_STATE_READY)
1117 case HAL_DAC_CH1_COMPLETE_CB_ID :
1118 hdac->ConvCpltCallbackCh1 = pCallback;
1120 case HAL_DAC_CH1_HALF_COMPLETE_CB_ID :
1121 hdac->ConvHalfCpltCallbackCh1 = pCallback;
1123 case HAL_DAC_CH1_ERROR_ID :
1124 hdac->ErrorCallbackCh1 = pCallback;
1126 case HAL_DAC_CH1_UNDERRUN_CB_ID :
1127 hdac->DMAUnderrunCallbackCh1 = pCallback;
1129#if defined(DAC_CHANNEL2_SUPPORT)
1130 case HAL_DAC_CH2_COMPLETE_CB_ID :
1131 hdac->ConvCpltCallbackCh2 = pCallback;
1133 case HAL_DAC_CH2_HALF_COMPLETE_CB_ID :
1134 hdac->ConvHalfCpltCallbackCh2 = pCallback;
1136 case HAL_DAC_CH2_ERROR_ID :
1137 hdac->ErrorCallbackCh2 = pCallback;
1139 case HAL_DAC_CH2_UNDERRUN_CB_ID :
1140 hdac->DMAUnderrunCallbackCh2 = pCallback;
1143 case HAL_DAC_MSPINIT_CB_ID :
1144 hdac->MspInitCallback = pCallback;
1146 case HAL_DAC_MSPDEINIT_CB_ID :
1147 hdac->MspDeInitCallback = pCallback;
1151 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1157 else if (hdac->State == HAL_DAC_STATE_RESET)
1161 case HAL_DAC_MSPINIT_CB_ID :
1162 hdac->MspInitCallback = pCallback;
1164 case HAL_DAC_MSPDEINIT_CB_ID :
1165 hdac->MspDeInitCallback = pCallback;
1169 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1178 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1207HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID)
1217 if (hdac->State == HAL_DAC_STATE_READY)
1221 case HAL_DAC_CH1_COMPLETE_CB_ID :
1222 hdac->ConvCpltCallbackCh1 = HAL_DAC_ConvCpltCallbackCh1;
1224 case HAL_DAC_CH1_HALF_COMPLETE_CB_ID :
1225 hdac->ConvHalfCpltCallbackCh1 = HAL_DAC_ConvHalfCpltCallbackCh1;
1227 case HAL_DAC_CH1_ERROR_ID :
1228 hdac->ErrorCallbackCh1 = HAL_DAC_ErrorCallbackCh1;
1230 case HAL_DAC_CH1_UNDERRUN_CB_ID :
1231 hdac->DMAUnderrunCallbackCh1 = HAL_DAC_DMAUnderrunCallbackCh1;
1233#if defined(DAC_CHANNEL2_SUPPORT)
1234 case HAL_DAC_CH2_COMPLETE_CB_ID :
1235 hdac->ConvCpltCallbackCh2 = HAL_DACEx_ConvCpltCallbackCh2;
1237 case HAL_DAC_CH2_HALF_COMPLETE_CB_ID :
1238 hdac->ConvHalfCpltCallbackCh2 = HAL_DACEx_ConvHalfCpltCallbackCh2;
1240 case HAL_DAC_CH2_ERROR_ID :
1241 hdac->ErrorCallbackCh2 = HAL_DACEx_ErrorCallbackCh2;
1243 case HAL_DAC_CH2_UNDERRUN_CB_ID :
1244 hdac->DMAUnderrunCallbackCh2 = HAL_DACEx_DMAUnderrunCallbackCh2;
1247 case HAL_DAC_MSPINIT_CB_ID :
1248 hdac->MspInitCallback = HAL_DAC_MspInit;
1250 case HAL_DAC_MSPDEINIT_CB_ID :
1251 hdac->MspDeInitCallback = HAL_DAC_MspDeInit;
1253 case HAL_DAC_ALL_CB_ID :
1254 hdac->ConvCpltCallbackCh1 = HAL_DAC_ConvCpltCallbackCh1;
1255 hdac->ConvHalfCpltCallbackCh1 = HAL_DAC_ConvHalfCpltCallbackCh1;
1256 hdac->ErrorCallbackCh1 = HAL_DAC_ErrorCallbackCh1;
1257 hdac->DMAUnderrunCallbackCh1 = HAL_DAC_DMAUnderrunCallbackCh1;
1258#if defined(DAC_CHANNEL2_SUPPORT)
1259 hdac->ConvCpltCallbackCh2 = HAL_DACEx_ConvCpltCallbackCh2;
1260 hdac->ConvHalfCpltCallbackCh2 = HAL_DACEx_ConvHalfCpltCallbackCh2;
1261 hdac->ErrorCallbackCh2 = HAL_DACEx_ErrorCallbackCh2;
1262 hdac->DMAUnderrunCallbackCh2 = HAL_DACEx_DMAUnderrunCallbackCh2;
1264 hdac->MspInitCallback = HAL_DAC_MspInit;
1265 hdac->MspDeInitCallback = HAL_DAC_MspDeInit;
1269 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1275 else if (hdac->State == HAL_DAC_STATE_RESET)
1279 case HAL_DAC_MSPINIT_CB_ID :
1280 hdac->MspInitCallback = HAL_DAC_MspInit;
1282 case HAL_DAC_MSPDEINIT_CB_ID :
1283 hdac->MspDeInitCallback = HAL_DAC_MspDeInit;
1287 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1296 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1325 DAC_HandleTypeDef *hdac = (DAC_HandleTypeDef *)((
DMA_HandleTypeDef *)hdma)->Parent;
1327#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1328 hdac->ConvCpltCallbackCh1(hdac);
1330 HAL_DAC_ConvCpltCallbackCh1(hdac);
1333 hdac->State = HAL_DAC_STATE_READY;
1344 DAC_HandleTypeDef *hdac = (DAC_HandleTypeDef *)((
DMA_HandleTypeDef *)hdma)->Parent;
1346#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1347 hdac->ConvHalfCpltCallbackCh1(hdac);
1349 HAL_DAC_ConvHalfCpltCallbackCh1(hdac);
1361 DAC_HandleTypeDef *hdac = (DAC_HandleTypeDef *)((
DMA_HandleTypeDef *)hdma)->Parent;
1364 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
1366#if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1367 hdac->ErrorCallbackCh1(hdac);
1369 HAL_DAC_ErrorCallbackCh1(hdac);
1372 hdac->State = HAL_DAC_STATE_READY;
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)