/* * stm32f4_pwm.h * * Created on: Aug 9, 2016 * Author: tkl */ #ifndef SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_INCLUDE_STM32F4_PWM_H_ #define SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_INCLUDE_STM32F4_PWM_H_ #pragma pack(push) #pragma pack(1) struct stm32f4_pwm { const struct stm32f4_gpio *pwm_gpio; TIM_HandleTypeDef *timer_handle; TIM_OC_InitTypeDef *output_compare_cfg; TIM_MasterConfigTypeDef *master_cfg; TIM_IC_InitTypeDef *input_capture_init; TIM_SlaveConfigTypeDef *slave_config; uint32_t channel; uint32_t timer_src_frequency_MHz; }; #pragma pack(pop) int stm32f4_pwm_open(const void *pwm); int stm32f4_pwm_close(const void *pwm); int stm32f4_pwm_set_duty_cycle(const void *pwm, unsigned int duty_cycle_percent); int stm32f4_pwm_get_period_ns(const void *pwm); int stm32f4_pwm_get_pulse_width_ns(const void *pwm); static const struct pwm_fp stm32f4_pwm_fp = { .open = stm32f4_pwm_open, .close = stm32f4_pwm_close, .set_duty_cycle = stm32f4_pwm_set_duty_cycle, .get_period = stm32f4_pwm_get_period_ns, .get_pulse_width = stm32f4_pwm_get_pulse_width_ns, }; #endif /* SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_INCLUDE_STM32F4_PWM_H_ */