From 3656006a3053e8ec4ac548ac52ded62108dc3a25 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Mon, 7 Apr 2025 11:56:52 -0400 Subject: [PATCH] stm32: Change hard_pwm.c MAX_PWM to 257 Choose a value for MAX_PWM that avoids an expensive run-time division. Signed-off-by: Kevin O'Connor --- src/stm32/gpio.h | 2 +- src/stm32/hard_pwm.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/stm32/gpio.h b/src/stm32/gpio.h index 96105e9bc..6a5f910cc 100644 --- a/src/stm32/gpio.h +++ b/src/stm32/gpio.h @@ -24,7 +24,7 @@ uint8_t gpio_in_read(struct gpio_in g); struct gpio_pwm { void *reg; }; -struct gpio_pwm gpio_pwm_setup(uint8_t pin, uint32_t cycle_time, uint8_t val); +struct gpio_pwm gpio_pwm_setup(uint8_t pin, uint32_t cycle_time, uint32_t val); void gpio_pwm_write(struct gpio_pwm g, uint32_t val); struct gpio_adc { diff --git a/src/stm32/hard_pwm.c b/src/stm32/hard_pwm.c index 09a29ed5f..d9be268ee 100644 --- a/src/stm32/hard_pwm.c +++ b/src/stm32/hard_pwm.c @@ -11,7 +11,7 @@ #include "internal.h" // GPIO #include "sched.h" // sched_shutdown -#define MAX_PWM 255 +#define MAX_PWM (256 + 1) DECL_CONSTANT("PWM_MAX", MAX_PWM); struct gpio_pwm_info { @@ -275,7 +275,8 @@ static const struct gpio_pwm_info pwm_regs[] = { }; struct gpio_pwm -gpio_pwm_setup(uint8_t pin, uint32_t cycle_time, uint8_t val){ +gpio_pwm_setup(uint8_t pin, uint32_t cycle_time, uint32_t val) +{ // Find pin in pwm_regs table const struct gpio_pwm_info* p = pwm_regs; for (;; p++) {