@web-font-path: "roboto-debian.css";
Loading...
Searching...
No Matches
pwm.h File Reference
#include "pico.h"
#include "hardware/structs/pwm.h"
#include "hardware/regs/dreq.h"
#include "hardware/regs/intctrl.h"
Include dependency graph for pwm.h:

Go to the source code of this file.

Data Structures

struct  pwm_config

Macros

#define PARAM_ASSERTIONS_ENABLED_HARDWARE_PWM   0
#define PWM_DREQ_NUM(slice_num)
 Returns the dreq_num_t used for pacing DMA transfers for a given PWM slice.
#define PWM_GPIO_SLICE_NUM(gpio)
 Returns the PWM slice number for a given GPIO number.
#define PICO_PWM_CLKDIV_ROUND_NEAREST   PICO_CLKDIV_ROUND_NEAREST
#define PWM_DEFAULT_IRQ_NUM()
 Returns the irq_num_t for the default PWM IRQ.

Enumerations

enum  pwm_clkdiv_mode { PWM_DIV_FREE_RUNNING = 0 , PWM_DIV_B_HIGH = 1 , PWM_DIV_B_RISING = 2 , PWM_DIV_B_FALLING = 3 }
 PWM Divider mode settings. More...
enum  pwm_chan { PWM_CHAN_A = 0 , PWM_CHAN_B = 1 }

Functions

static void check_slice_num_param (__unused uint slice_num)
static uint pwm_gpio_to_slice_num (uint gpio)
 Determine the PWM slice that is attached to the specified GPIO.
static uint pwm_gpio_to_channel (uint gpio)
 Determine the PWM channel that is attached to the specified GPIO.
static void pwm_config_set_phase_correct (pwm_config *c, bool phase_correct)
 Set phase correction in a PWM configuration.
static void pwm_config_set_clkdiv (pwm_config *c, float div)
 Set PWM clock divider in a PWM configuration.
static void pwm_config_set_clkdiv_int_frac4 (pwm_config *c, uint32_t div_int, uint8_t div_frac4)
 Set PWM clock divider in a PWM configuration using an 8:4 fractional value.
static void pwm_config_set_clkdiv_int_frac (pwm_config *c, uint8_t div_int, uint8_t div_frac4)
static void pwm_config_set_clkdiv_int (pwm_config *c, uint32_t div_int)
 Set PWM clock divider in a PWM configuration.
static void pwm_config_set_clkdiv_mode (pwm_config *c, enum pwm_clkdiv_mode mode)
 Set PWM counting mode in a PWM configuration.
static void pwm_config_set_output_polarity (pwm_config *c, bool a, bool b)
 Set output polarity in a PWM configuration.
static void pwm_config_set_wrap (pwm_config *c, uint16_t wrap)
 Set PWM counter wrap value in a PWM configuration.
static void pwm_init (uint slice_num, pwm_config *c, bool start)
 Initialise a PWM with settings from a configuration object.
static pwm_config pwm_get_default_config (void)
 Get a set of default values for PWM configuration.
static void pwm_set_wrap (uint slice_num, uint16_t wrap)
 Set the current PWM counter wrap value.
static void pwm_set_chan_level (uint slice_num, uint chan, uint16_t level)
 Set the current PWM counter compare value for one channel.
static void pwm_set_both_levels (uint slice_num, uint16_t level_a, uint16_t level_b)
 Set PWM counter compare values.
static void pwm_set_gpio_level (uint gpio, uint16_t level)
 Helper function to set the PWM level for the slice and channel associated with a GPIO.
static uint16_t pwm_get_counter (uint slice_num)
 Get PWM counter.
static void pwm_set_counter (uint slice_num, uint16_t c)
 Set PWM counter.
static void pwm_advance_count (uint slice_num)
 Advance PWM count.
static void pwm_retard_count (uint slice_num)
 Retard PWM count.
static void pwm_set_clkdiv_int_frac4 (uint slice_num, uint8_t div_int, uint8_t div_frac4)
 Set PWM clock divider using an 8:4 fractional value.
static void pwm_set_clkdiv_int_frac (uint slice_num, uint8_t div_int, uint8_t div_frac4)
static void pwm_set_clkdiv (uint slice_num, float divider)
 Set PWM clock divider.
static void pwm_set_output_polarity (uint slice_num, bool a, bool b)
 Set PWM output polarity.
static void pwm_set_clkdiv_mode (uint slice_num, enum pwm_clkdiv_mode mode)
 Set PWM divider mode.
static void pwm_set_phase_correct (uint slice_num, bool phase_correct)
 Set PWM phase correct on/off.
static void pwm_set_enabled (uint slice_num, bool enabled)
 Enable/Disable PWM.
static void pwm_set_mask_enabled (uint32_t mask)
 Enable/Disable multiple PWM slices simultaneously.
static void pwm_set_irq_enabled (uint slice_num, bool enabled)
 Enable PWM instance interrupt via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350).
static void pwm_set_irq0_enabled (uint slice_num, bool enabled)
 Enable PWM instance interrupt via PWM_IRQ_WRAP_0.
static void pwm_irqn_set_slice_enabled (uint irq_index, uint slice_num, bool enabled)
 Enable PWM instance interrupt via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.
static void pwm_set_irq_mask_enabled (uint32_t slice_mask, bool enabled)
 Enable multiple PWM instance interrupts via the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350).
static void pwm_set_irq0_mask_enabled (uint32_t slice_mask, bool enabled)
 Enable multiple PWM instance interrupts via PWM_IRQ_WRAP_0.
static void pwm_irqn_set_slice_mask_enabled (uint irq_index, uint slice_mask, bool enabled)
 Enable PWM instance interrupts via either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.
static void pwm_clear_irq (uint slice_num)
 Clear a single PWM channel interrupt.
static uint32_t pwm_get_irq_status_mask (void)
 Get PWM interrupt status, raw for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350).
static uint32_t pwm_get_irq0_status_mask (void)
 Get PWM interrupt status, raw for the PWM_IRQ_WRAP_0.
static uint32_t pwm_irqn_get_status_mask (uint irq_index)
 Get PWM interrupt status, raw for either PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.
static void pwm_force_irq (uint slice_num)
 Force PWM interrupt for the default PWM IRQ (PWM_IRQ_WRAP_0 on RP2350).
static void pwm_force_irq0 (uint slice_num)
 Force PWM interrupt via PWM_IRQ_WRAP_0.
static void pwm_irqn_force (uint irq_index, uint slice_num)
 Force PWM interrupt via PWM_IRQ_WRAP_0 or PWM_IRQ_WRAP_1.
static uint pwm_get_dreq (uint slice_num)
 Return the DREQ to use for pacing transfers to a particular PWM slice.