12#if defined(STM32) && defined(HAL_DAC_MODULE_ENABLED)
16: m_hwHandle(hwHandle),
18 m_alignment(alignment)
26 HAL_StatusTypeDef state = HAL_DAC_Start(&m_hwHandle, m_channel);
29 if (state == HAL_ERROR)
34 else if (state == HAL_BUSY)
39 else if (state == HAL_TIMEOUT)
51 HAL_StatusTypeDef state = HAL_DAC_Stop(&m_hwHandle, m_channel);
54 if (state == HAL_ERROR)
59 else if (state == HAL_BUSY)
64 else if (state == HAL_TIMEOUT)
75 SEMF_INFO(
"set value on channel %u to %u", m_channel, value);
76 HAL_StatusTypeDef state = HAL_DAC_SetValue(&m_hwHandle, m_channel, alignment(m_alignment), value);
79 if (state == HAL_ERROR)
84 else if (state == HAL_BUSY)
89 else if (state == HAL_TIMEOUT)
112 if (&dac == &m_hwHandle)
119uint32_t Stm32AnalogOut::alignment(Alignment setting)
const
124 return DAC_ALIGN_8B_R;
127 return DAC_ALIGN_12B_L;
130 return DAC_ALIGN_12B_R;
133 SEMF_ERROR(
"invalid alignment setting %u",
static_cast<uint8_t
>(setting));
Class for representing errors. Every error should have a unique source code. As a user feel encourage...
LinkedQueue is an managed single linked queue implementation.
void isrError(DAC_HandleTypeDef &dac)
Sending a error signal.
static LinkedQueue< Stm32AnalogOut > * queue()
Get the list with all analog outs.
static void systemIsrError(DAC_HandleTypeDef &dac)
System-wide interrupt service routine for dac error.
void setValue(uint32_t value) override
Writes value into hardware register. Call start to output the value.
void start() const override
Starts the hardware module (DAC) for writing DAC values to the output. Call setValue before.
Stm32AnalogOut(DAC_HandleTypeDef &hwHandle, uint32_t channel, Alignment alignment)
Constructor.
void stop() const override