/*
 * 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;
	uint32_t channel;
};
#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);

static const struct pwm_fp stm32f4_pwm_fp = {
		.open = stm32f4_pwm_open,
		.close = stm32f4_pwm_close,
		.set_duty_cycle = stm32f4_pwm_set_duty_cycle,
};

#endif /* SOURCE_FIRMWARE_ARCH_STM32F4XX_DRIVER_INCLUDE_STM32F4_PWM_H_ */