229 #ifdef HAL_DAC_MODULE_ENABLED
279 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
283 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
289 #if defined(DAC_CHANNEL2_SUPPORT)
295 if (hdac->MspInitCallback == NULL)
302 hdac->Lock = HAL_UNLOCKED;
304 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
306 hdac->MspInitCallback(hdac);
317 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
341 assert_param(IS_DAC_ALL_INSTANCE(hdac->Instance));
346 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
347 if (hdac->MspDeInitCallback == NULL)
352 hdac->MspDeInitCallback(hdac);
359 hdac->ErrorCode = HAL_DAC_ERROR_NONE;
444 assert_param(IS_DAC_CHANNEL(Channel));
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);
505 assert_param(IS_DAC_CHANNEL(Channel));
508 __HAL_DAC_DISABLE(hdac, Channel);
537 HAL_StatusTypeDef status = HAL_ERROR;
547 assert_param(IS_DAC_CHANNEL(Channel));
548 assert_param(IS_DAC_ALIGN(Alignment));
556 if (Channel == DAC_CHANNEL_1)
568 SET_BIT(hdac->Instance->CR, DAC_CR_DMAEN1);
573 case DAC_ALIGN_12B_R:
575 tmpreg = (uint32_t)&hdac->Instance->DHR12R1;
577 case DAC_ALIGN_12B_L:
579 tmpreg = (uint32_t)&hdac->Instance->DHR12L1;
583 tmpreg = (uint32_t)&hdac->Instance->DHR8R1;
587 #if defined(DAC_CHANNEL2_SUPPORT)
600 SET_BIT(hdac->Instance->CR, DAC_CR_DMAEN2);
605 case DAC_ALIGN_12B_R:
607 tmpreg = (uint32_t)&hdac->Instance->DHR12R2;
609 case DAC_ALIGN_12B_L:
611 tmpreg = (uint32_t)&hdac->Instance->DHR12L2;
615 tmpreg = (uint32_t)&hdac->Instance->DHR8R2;
620 if (Channel == DAC_CHANNEL_1)
623 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR1);
626 status =
HAL_DMA_Start_IT(hdac->DMA_Handle1, (uint32_t)pData, tmpreg, Length);
628 #if defined(DAC_CHANNEL2_SUPPORT)
632 __HAL_DAC_ENABLE_IT(hdac, DAC_IT_DMAUDR2);
635 status =
HAL_DMA_Start_IT(hdac->DMA_Handle2, (uint32_t)pData, tmpreg, Length);
642 if (status == HAL_OK)
645 __HAL_DAC_ENABLE(hdac, Channel);
649 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
675 assert_param(IS_DAC_CHANNEL(Channel));
678 hdac->Instance->CR &= ~(DAC_CR_DMAEN1 << (Channel & 0x10UL));
681 __HAL_DAC_DISABLE(hdac, Channel);
686 if (Channel == DAC_CHANNEL_1)
692 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR1);
694 #if defined(DAC_CHANNEL2_SUPPORT)
701 __HAL_DAC_DISABLE_IT(hdac, DAC_IT_DMAUDR2);
722 uint32_t itsource = hdac->Instance->CR;
723 uint32_t itflag = hdac->Instance->SR;
725 if ((itsource & DAC_IT_DMAUDR1) == DAC_IT_DMAUDR1)
728 if ((itflag & DAC_FLAG_DMAUDR1) == DAC_FLAG_DMAUDR1)
734 SET_BIT(hdac->ErrorCode, HAL_DAC_ERROR_DMAUNDERRUNCH1);
737 __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR1);
740 __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN1);
743 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
744 hdac->DMAUnderrunCallbackCh1(hdac);
751 #if defined(DAC_CHANNEL2_SUPPORT)
752 if ((itsource & DAC_IT_DMAUDR2) == DAC_IT_DMAUDR2)
755 if ((itflag & DAC_FLAG_DMAUDR2) == DAC_FLAG_DMAUDR2)
761 SET_BIT(hdac->ErrorCode, HAL_DAC_ERROR_DMAUNDERRUNCH2);
764 __HAL_DAC_CLEAR_FLAG(hdac, DAC_FLAG_DMAUDR2);
767 __HAL_DAC_DISABLE_IT(hdac, DAC_CR_DMAEN2);
770 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
771 hdac->DMAUnderrunCallbackCh2(hdac);
798 __IO uint32_t tmp = 0UL;
807 assert_param(IS_DAC_CHANNEL(Channel));
808 assert_param(IS_DAC_ALIGN(Alignment));
809 assert_param(IS_DAC_DATA(Data));
811 tmp = (uint32_t)hdac->Instance;
812 if (Channel == DAC_CHANNEL_1)
814 tmp += DAC_DHR12R1_ALIGNMENT(Alignment);
816 #if defined(DAC_CHANNEL2_SUPPORT)
819 tmp += DAC_DHR12R2_ALIGNMENT(Alignment);
824 *(__IO uint32_t *) tmp = Data;
928 assert_param(hdac != NULL);
931 assert_param(IS_DAC_CHANNEL(Channel));
933 if (Channel == DAC_CHANNEL_1)
935 result = hdac->Instance->DOR1;
937 #if defined(DAC_CHANNEL2_SUPPORT)
940 result = hdac->Instance->DOR2;
961 HAL_StatusTypeDef status = HAL_OK;
966 if ((hdac == NULL) || (sConfig == NULL))
972 assert_param(IS_DAC_TRIGGER(sConfig->
DAC_Trigger));
974 assert_param(IS_DAC_CHANNEL(Channel));
983 tmpreg1 = hdac->Instance->CR;
985 tmpreg1 &= ~(((uint32_t)(DAC_CR_MAMP1 | DAC_CR_WAVE1 | DAC_CR_TSEL1 | DAC_CR_TEN1 | DAC_CR_BOFF1))
986 << (Channel & 0x10UL));
992 tmpreg1 |= tmpreg2 << (Channel & 0x10UL);
994 hdac->Instance->CR = tmpreg1;
996 CLEAR_BIT(hdac->Instance->CR, (DAC_CR_WAVE1 << (Channel & 0x10UL)));
1049 return hdac->ErrorCode;
1067 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1094 HAL_StatusTypeDef status = HAL_OK;
1102 if (pCallback == NULL)
1105 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1114 hdac->ConvCpltCallbackCh1 = pCallback;
1117 hdac->ConvHalfCpltCallbackCh1 = pCallback;
1120 hdac->ErrorCallbackCh1 = pCallback;
1123 hdac->DMAUnderrunCallbackCh1 = pCallback;
1125 #if defined(DAC_CHANNEL2_SUPPORT)
1127 hdac->ConvCpltCallbackCh2 = pCallback;
1130 hdac->ConvHalfCpltCallbackCh2 = pCallback;
1133 hdac->ErrorCallbackCh2 = pCallback;
1136 hdac->DMAUnderrunCallbackCh2 = pCallback;
1140 hdac->MspInitCallback = pCallback;
1143 hdac->MspDeInitCallback = pCallback;
1147 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1158 hdac->MspInitCallback = pCallback;
1161 hdac->MspDeInitCallback = pCallback;
1165 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1174 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1205 HAL_StatusTypeDef status = HAL_OK;
1229 #if defined(DAC_CHANNEL2_SUPPORT)
1254 #if defined(DAC_CHANNEL2_SUPPORT)
1265 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1283 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1292 hdac->ErrorCode |= HAL_DAC_ERROR_INVALID_CALLBACK;
1323 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1324 hdac->ConvCpltCallbackCh1(hdac);
1342 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1343 hdac->ConvHalfCpltCallbackCh1(hdac);
1360 hdac->ErrorCode |= HAL_DAC_ERROR_DMA;
1362 #if (USE_HAL_DAC_REGISTER_CALLBACKS == 1)
1363 hdac->ErrorCallbackCh1(hdac);
void HAL_DACEx_ErrorCallbackCh2(DAC_HandleTypeDef *hdac)
Error DAC callback for Channel2.
void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef *hdac)
Conversion half DMA transfer callback in non-blocking mode for Channel2.
void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef *hdac)
Conversion complete callback in non-blocking mode for Channel2.
void HAL_DACEx_DMAUnderrunCallbackCh2(DAC_HandleTypeDef *hdac)
DMA underrun DAC callback for Channel2.
void DAC_DMAHalfConvCpltCh2(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
void DAC_DMAConvCpltCh2(DMA_HandleTypeDef *hdma)
DMA conversion complete callback.
void DAC_DMAErrorCh2(DMA_HandleTypeDef *hdma)
DMA error callback.
HAL_StatusTypeDef HAL_DAC_RegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID, pDAC_CallbackTypeDef pCallback)
Register a User DAC Callback To be used instead of the weak (overridden) predefined callback.
void HAL_DAC_MspInit(DAC_HandleTypeDef *hdac)
Initialize the DAC MSP.
HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac)
Initialize the DAC peripheral according to the specified parameters in the DAC_InitStruct and initial...
HAL_StatusTypeDef HAL_DAC_DeInit(DAC_HandleTypeDef *hdac)
Deinitialize the DAC peripheral registers to their default reset values.
void HAL_DAC_MspDeInit(DAC_HandleTypeDef *hdac)
DeInitialize the DAC MSP.
HAL_StatusTypeDef HAL_DAC_UnRegisterCallback(DAC_HandleTypeDef *hdac, HAL_DAC_CallbackIDTypeDef CallbackID)
Unregister a User DAC Callback DAC Callback is redirected to the weak (overridden) predefined callbac...
HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel)
Disables DAC and stop conversion of channel.
HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel)
Enables DAC and starts conversion of channel.
void HAL_DAC_ConvHalfCpltCallbackCh1(DAC_HandleTypeDef *hdac)
Conversion half DMA transfer callback in non-blocking mode for Channel1.
HAL_StatusTypeDef HAL_DAC_Stop_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel)
Disables DAC and stop conversion of channel.
HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data)
Set the specified data holding register value for DAC channel.
HAL_StatusTypeDef HAL_DAC_Start_DMA(DAC_HandleTypeDef *hdac, uint32_t Channel, const uint32_t *pData, uint32_t Length, uint32_t Alignment)
Enables DAC and starts conversion of channel.
void HAL_DAC_ErrorCallbackCh1(DAC_HandleTypeDef *hdac)
Error DAC callback for Channel1.
void HAL_DAC_IRQHandler(DAC_HandleTypeDef *hdac)
Handles DAC interrupt request This function uses the interruption of DMA underrun.
void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef *hdac)
Conversion complete callback in non-blocking mode for Channel1.
void HAL_DAC_DMAUnderrunCallbackCh1(DAC_HandleTypeDef *hdac)
DMA underrun DAC callback for channel1.
uint32_t HAL_DAC_GetValue(const DAC_HandleTypeDef *hdac, uint32_t Channel)
Returns the last data output value of the selected DAC channel.
HAL_StatusTypeDef HAL_DAC_ConfigChannel(DAC_HandleTypeDef *hdac, const DAC_ChannelConfTypeDef *sConfig, uint32_t Channel)
Configures the selected DAC channel.
HAL_DAC_StateTypeDef HAL_DAC_GetState(const DAC_HandleTypeDef *hdac)
return the DAC handle state
uint32_t HAL_DAC_GetError(const DAC_HandleTypeDef *hdac)
Return the DAC error code.
uint32_t DAC_OutputBuffer
void(* pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac)
HAL DAC Callback pointer definition.
struct __DAC_HandleTypeDef else typedef struct endif DAC_HandleTypeDef
DAC handle Structure definition.
HAL_DAC_CallbackIDTypeDef
HAL DAC Callback ID enumeration definition.
HAL_DAC_StateTypeDef
HAL State structures definition.
@ HAL_DAC_MSPDEINIT_CB_ID
@ HAL_DAC_CH1_HALF_COMPLETE_CB_ID
@ HAL_DAC_CH2_HALF_COMPLETE_CB_ID
@ HAL_DAC_CH2_UNDERRUN_CB_ID
@ HAL_DAC_CH1_UNDERRUN_CB_ID
@ HAL_DAC_CH1_COMPLETE_CB_ID
@ HAL_DAC_CH2_COMPLETE_CB_ID
DAC Configuration regular Channel structure definition.
void DAC_DMAConvCpltCh1(DMA_HandleTypeDef *hdma)
DMA conversion complete callback.
void DAC_DMAHalfConvCpltCh1(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
void DAC_DMAErrorCh1(DMA_HandleTypeDef *hdma)
DMA error callback.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
This file contains all the functions prototypes for the HAL module driver.
DMA handle Structure definition.