14#error PWM driver is a C++ only library
17#define DEFAULT_PWM_MODULE 0
18#define PWM_MODULE_COUNT 2
19#define PWM_CHANNEL_COUNT 4
21#define PWM_CLOCK_DIV_MAX 256
22#define PWM_CLOCK_PRE_MAX 11
26extern volatile uint32_t PERIPH_CLOCK;
30enum pwmChannelNumber {
49 uint32_t m_reg_PWM_CMR;
55 uint32_t m_clockSource;
66 static PWMModule *lastCtxs[PWM_MODULE_COUNT];
71 uint32_t m_reg_PWM_CLK;
78 static pwmChannelStruct pwmChannels[PWM_MODULE_COUNT][PWM_CHANNEL_COUNT];
112 inline Pwm * pwm() {
return PWM0 + m_moduleNum; }
113 inline pwmChannelStruct * getChannelStruct(uint8_t channelNum) {
return &(pwmChannels[m_moduleNum][channelNum]); }
119 void dumpChannelStruct(uint8_t channelNum);
122 PWMModule( uint8_t pwmModule = DEFAULT_PWM_MODULE);
125 uint32_t ConfigureChannel(uint8_t channelNum, uint32_t frequency,
126 uint8_t alignment = PWM_ALIGN_LEFT, uint8_t polarity = PWM_LOW_LEVEL,
127 uint32_t period = 100, uint32_t dutyCycle = 50);
128 uint8_t EnableChannel(uint8_t channelNum);
129 uint8_t DisableChannel(uint8_t channelNum);
130 uint32_t SetFrequency(uint8_t channelNum, uint32_t frequency);
131 uint32_t GetActualFrequency(uint8_t channelNum);
132 bool ChannelIsActive(uint8_t channelNum);
NetBurner Real-Time Operating System (NBRTOS) API.
#define PWM0
(PWM0 ) Base Address
Definition same70q21_sim.h:221