PWM: Pulse-Width Modulation¶
The driver interface is defined in the ESP8266 SDK.
Build variables¶
-
ENABLE_CUSTOM_PWM
¶ - undefined
- use the Espressif PWM driver
- 1 (default)
- Use the New PWM driver, a drop-in replacement for the version provided in the Espressif SDK.
API Documentation¶
-
void
pwm_init
(uint32 period, uint32 *duty, uint32 pwm_channel_num, uint32 (*pin_info_list)[3])¶ Initialize PWM function, including GPIO selection, period and duty cycle.
Example:
uint32 io_info[][3] = { {PWM_0_OUT_IO_MUX, PWM_0_OUT_IO_FUNC, PWM_0_OUT_IO_NUM}, {PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM}, {PWM_2_OUT_IO_MUX, PWM_2_OUT_IO_FUNC, PWM_2_OUT_IO_NUM} }; pwm_init(light_param.pwm_period, light_param.pwm_duty, 3, io_info);
- Note
- This API can be called only once.
- Parameters
period
: PWM periodduty
: duty cycle of each outputpwm_channel_num
: PWM channel numberpin_info_list
: Array containing an entry for each channel giving
-
void
pwm_start
(void)¶ Starts PWM.
This function needs to be called after PWM configuration is changed.
-
void
pwm_set_duty
(uint32 duty, uint8 channel)¶ Sets duty cycle of a PWM output.
Set the time that high-level signal will last. The range of duty depends on PWM period. Its maximum value of which can be Period * 1000 / 45.
- Parameters
duty
: The time that high-level single will last, duty cycle will be (duty*45)/(period*1000)channel
: PWM channel, which depends on how many PWM channels are used
For example, for 1-KHz PWM, the duty range is 0 ~ 22222.
-
uint32
pwm_get_duty
(uint8 channel)¶ Get duty cycle of PWM output.
Duty cycle will be (duty*45) / (period*1000).
- Parameters
channel
: PWM channel, which depends on how many PWM channels are used
- Return Value
uint32
: Duty cycle of PWM output
-
void
pwm_set_period
(uint32 period)¶ Set PWM period.
- Parameters
period
: PWM period in us. For example, 1-KHz PWM period = 1000us.
-
uint32
pwm_get_period
(void)¶ Get PWM period.
- Return Value
uint32
: Return PWM period in us.
-
uint32
get_pwm_version
(void)¶ Get version information of PWM.
- Return Value
uint32
: PWM version