#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/pwm.h"
uint32_t pwm_set_freq_duty(uint slice_num, uint chan, uint32_t f, int d)
{
uint32_t clock = 125000000;
uint32_t divider16 = clock / f / 4096 + (clock % (f * 4096) != 0);
if (divider16 / 16 == 0)
divider16 = 16;
uint32_t wrap = clock * 16 / divider16 / f - 1;
pwm_set_clkdiv_int_frac(slice_num, divider16 / 16, divider16 & 0xf);
pwm_set_wrap(slice_num, chan, wrap * d / 100);
printf("In set freq duty\n");
printf("div: %d, clock: %d, wrap: %d\n", divider16, clock, wrap);
return wrap;
}
int main() {
stdio_init_all();
gpio_set_function(22, GPIO_FUNC_PWM);
uint slice_num = pwm_gpio_to_slice_num(22);
uint chan = pwm_gpio_to_channel(22);
uint32_t wrap = pwm_set_freq_duty(slice_num, chan, 50, 75)
printf("wrap is %d\n", wrap);
pwm_set_enabled(slice_num, true);
}