ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
pwm.hpp
Go to the documentation of this file.
1
43#ifndef ELEC_C7222_DEVICES_PWM_HPP
44#define ELEC_C7222_DEVICES_PWM_HPP
45
46#include <cstdint>
47
48#include "non_copyable.hpp"
49
50namespace c7222 {
51
64 public:
68 struct Config {
70 uint32_t pin_;
72 float period_us{1000.0f};
74 float duty_cycle{0.0f};
76 bool enabled{true};
78 bool active_low{false};
79
84 explicit Config(uint32_t pin);
89 bool Validate() const;
90 };
91
95 explicit PwmOut(uint32_t pin);
101 explicit PwmOut(uint32_t pin, const Config& config);
102
108 virtual ~PwmOut();
109
114 void Configure(const Config& config);
118 void SetPeriodUs(float period_us);
126 void SetActiveLow(bool active_low);
130 void Enable(bool on);
131
135 uint32_t GetPin() const {
136 return pin_;
137 }
142 return config_;
143 }
144
145 protected:
152
154 uint32_t pin_;
157};
158
159} // namespace c7222
160
161#endif // ELEC_C7222_DEVICES_PWM_HPP
Disable both copy and move operations.
Definition non_copyable.hpp:75
Output-only PWM wrapper with period and duty configuration.
Definition pwm.hpp:63
void Enable(bool on)
Enable or disable the PWM output.
Config config_
Cached configuration used to (re)apply platform settings.
Definition pwm.hpp:156
void SetActiveLow(bool active_low)
Set PWM polarity (active-low when true).
void ApplyConfig()
Apply internal configuration to the hardware.
void SetPeriodUs(float period_us)
Set PWM period in microseconds.
virtual ~PwmOut()
Destructor.
PwmOut(uint32_t pin, const Config &config)
Create a PWM output with the given configuration.
void SetDutyCycle(float duty_cycle)
Set PWM duty cycle fraction [0.0, 1.0].
PwmOut(uint32_t pin)
Create a PWM output with default configuration.
void Configure(const Config &config)
Apply a new configuration.
uint32_t pin_
GPIO pin number managed by this instance.
Definition pwm.hpp:154
Config GetConfig() const
Return the cached configuration.
Definition pwm.hpp:141
uint32_t GetPin() const
Return the GPIO number.
Definition pwm.hpp:135
float duty_cycle
Current PWM duty cycle used to dim LED3_RED.
Definition main_freertos_device.cpp:96
C7222 course abstractions namespace.
Definition ble.hpp:20
Base classes to control copy/move semantics.
Configuration structure for PWM output setup.
Definition pwm.hpp:68
bool active_low
Invert PWM output polarity when true (active-low).
Definition pwm.hpp:78
float period_us
PWM period in microseconds.
Definition pwm.hpp:72
uint32_t pin_
GPIO pin number.
Definition pwm.hpp:70
Config(uint32_t pin)
Create config with a pin number.
float duty_cycle
Duty cycle fraction [0.0, 1.0].
Definition pwm.hpp:74
bool enabled
Enable PWM output on init.
Definition pwm.hpp:76
bool Validate() const
Validate configuration.