semf
stm32analogout.h
Go to the documentation of this file.
1
9#ifndef SEMF_HARDWAREABSTRACTION_STM32_STM32ANALOGOUT_H_
10#define SEMF_HARDWAREABSTRACTION_STM32_STM32ANALOGOUT_H_
11
14
15#if defined(STM32) && defined(HAL_DAC_MODULE_ENABLED)
17namespace semf
18{
23class Stm32AnalogOut : public AnalogOut, public LinkedQueue<Stm32AnalogOut>::Node
24{
25public:
27 enum class ErrorCode : uint8_t
28 {
29 Start_HalError = 0,
30 Start_HalBusy,
31 Start_HalTimeout,
32 Stop_HalError,
33 Stop_HalBusy,
34 Stop_HalTimeout,
35 SetValue_HalError,
36 SetValue_HalBusy,
37 SetValue_HalTimeout,
38 IsrError_Isr
39 };
41 enum class Alignment : uint32_t
42 {
43 Align8bitRight = 0,
44 Align12bitLeft,
45 Align12bitRight
46 };
47
54 Stm32AnalogOut(DAC_HandleTypeDef& hwHandle, uint32_t channel, Alignment alignment);
55 explicit Stm32AnalogOut(const Stm32AnalogOut& other) = delete;
56 virtual ~Stm32AnalogOut() = default;
57
64 void start() const override;
71 void stop() const override;
72 void setValue(uint32_t value) override;
82 static void systemIsrError(DAC_HandleTypeDef& dac);
88 void isrError(DAC_HandleTypeDef& dac);
89
90private:
96 uint32_t alignment(Alignment setting) const;
97
99 DAC_HandleTypeDef& m_hwHandle;
101 uint32_t m_channel;
103 Alignment m_alignment;
105 static constexpr Error::ClassID kSemfClassId = Error::ClassID::Stm32AnalogOut;
106};
107} /* namespace semf */
108#endif /* STM32 & HAL_DAC_MODULE_ENABLED */
109#endif /* SEMF_HARDWAREABSTRACTION_STM32_STM32ANALOGOUT_H_ */
Interface for using DAC (Digital to Analog Converter) hardware module in interrupt mode.
Definition: analogout.h:23
ClassID
Semf class IDs.
Definition: error.h:28
LinkedQueue is an managed single linked queue implementation.
Definition: linkedqueue.h:38
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.
Stm32AnalogOut(const Stm32AnalogOut &other)=delete
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
virtual ~Stm32AnalogOut()=default