semf
stm32externalinterrupt.h
Go to the documentation of this file.
1
10#ifndef SEMF_HARDWAREABSTRACTION_STM32_STM32EXTERNALINTERRUPT_H_
11#define SEMF_HARDWAREABSTRACTION_STM32_STM32EXTERNALINTERRUPT_H_
12
15
16#if defined(STM32)
18#include <cstdint>
19
20namespace semf
21{
25class Stm32ExternalInterrupt : public ExternalInterrupt, public LinkedQueue<Stm32ExternalInterrupt>::Node
26{
27public:
29 enum class ErrorCode : uint8_t
30 {
31 SetConfigLine_HalError = 0,
32 SetConfigLine_HalBusy,
33 SetConfigLine_HalTimeout
34 };
35
43 explicit Stm32ExternalInterrupt(uint32_t externalInterruptPort, uint32_t externalInterruptPinLine);
44 explicit Stm32ExternalInterrupt(const Stm32ExternalInterrupt& other) = delete;
45 virtual ~Stm32ExternalInterrupt() = default;
46
56 static void systemIsr(uint16_t pin);
61 void isr(uint16_t pin);
69 void setTrigger(Trigger trigger) override;
70
71private:
73 uint32_t m_externalInterruptPort;
75 EXTI_HandleTypeDef m_handle;
77 static constexpr Error::ClassID kSemfClassId = Error::ClassID::Stm32ExternalInterrupt;
78};
79} /* namespace semf */
80#endif
81#endif /* SEMF_HARDWAREABSTRACTION_STM32_STM32EXTERNALINTERRUPT_H_ */
ClassID
Semf class IDs.
Definition: error.h:28
Interface for using a external interrupt.
LinkedQueue is an managed single linked queue implementation.
Definition: linkedqueue.h:38
ExternalInterrupt implementation for STM32.
static LinkedQueue< Stm32ExternalInterrupt > * queue()
Get the list with all external interrupts.
Stm32ExternalInterrupt(uint32_t externalInterruptPort, uint32_t externalInterruptPinLine)
Constructor.
static void systemIsr(uint16_t pin)
void setTrigger(Trigger trigger) override
Sets the trigger condition of an EXTI.
Stm32ExternalInterrupt(const Stm32ExternalInterrupt &other)=delete
virtual ~Stm32ExternalInterrupt()=default