zephyr/drivers/pwm/pwm_stm32.h
Erwan Gouriou 4827f2f386 pwm/stm32: add PWM driver for STM32 F1/F4/L4
Provide PWM driver for STM32 series F1/F4/L4.
Driver is ported on STM32Cube HAL and should support other STM32
series with minor updates.
Configuration is done so that PWM sample driver could be run on
all nucleo boards supporting PWM driver.

Change-Id: I6522a565451085df932e0eefd8404268380b5bfe
Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2016-12-06 10:31:46 -06:00

57 lines
1.4 KiB
C

/*
* Copyright (c) 2016 Linaro Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file Header file for the STM32 PWM driver.
*/
#ifndef __PWM_STM32_H__
#define __PWM_STM32_H__
#ifdef __cplusplus
extern "C" {
#endif
/** Configuration data */
struct pwm_stm32_config {
uint32_t pwm_base;
/* clock subsystem driving this peripheral */
#if defined(CONFIG_SOC_SERIES_STM32F1X) || defined(CONFIG_SOC_SERIES_STM32L4X)
clock_control_subsys_t clock_subsys;
#elif defined(CONFIG_SOC_SERIES_STM32F4X)
struct stm32f4x_pclken pclken;
#endif
};
/** Runtime driver data */
struct pwm_stm32_data {
/* PWM peripheral handler */
TIM_HandleTypeDef hpwm;
/* Prescaler for PWM output clock
* Value used to divide the TIM clock.
* Min = 0x0000U, Max = 0xFFFFU
*/
uint32_t pwm_prescaler;
/* clock device */
struct device *clock;
};
#ifdef __cplusplus
}
#endif
#endif /* __PWM_STM32_H__ */