How To Use DAC on STM32F4 Discovery?
The HAL_DAC_Init() function is not expected enable the associated module clock. That job is expected to be done by the HAL_DAC_MspInit function(). Since you didn’t define one, the compiler brought in the “weak” definition from stm32F4xx_hal_dac.c which is an empty function. When CubeMX generates code for the DAC, it will create a HAL_DAC_MspInit() function that enables the clock and configures the selected GPIO as DAC output.
All HAL drivers use this model of having the low-level clock and I/O setup done in a MspInit() function.