blob: 6821b4e2b6b573bd2b73436b574e23a83f12cbae [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
#ifndef __PWM_STM32_H__
#define __PWM_STM32_H__
#include <pwm/pwm.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* All HW timers capable of PWM are supported. A maximum of 4 channels per
* timer can be configured, depending on the HW timer being used.
*
* Currently there is no support for complementary outputs.
*
* MCU_AFIO_PIN_NONE can be used in pwm_configure_channel in order
* 'unconfigure' a previously configured PWM IO pin.
*
* The driver can return one of several error codes in order to aid issue
* tracking.
*
* STM32_PWM_ERR_OK ... no error
* STM32_PWM_ERR_NODEV ... no devices available, depending on configuration
* up to 3 devices are supported
* STM32_PWM_ERR_NOTIM ... no hw timer was specified for initialization
* STM32_PWM_ERR_CHAN ... specified channel is not valid for device
* STM32_PWM_ERR_FREQ ... either no frequency was specified, or the specified
* frequency is higher than the clock frequency
* STM32_PWM_ERR_GPIO ... an error occured during IO pin configuration
* STM32_PWM_ERR_NOIRQ ... the device was registered without IRQ support but
* later cycle and/or sequence support was requested
*/
#define STM32_PWM_ERR_OK 0
#define STM32_PWM_ERR_NODEV 1
#define STM32_PWM_ERR_NOTIM 2
#define STM32_PWM_ERR_CHAN 3
#define STM32_PWM_ERR_FREQ 4
#define STM32_PWM_ERR_GPIO 5
#define STM32_PWM_ERR_NOIRQ 6
typedef struct stm32_pwm_conf {
TIM_TypeDef *tim;
uint16_t irq;
} stm32_pwm_conf_t;
int stm32_pwm_dev_init(struct os_dev *dev, void *struct_stm32_pwm_conf_pointer);
#ifdef __cplusplus
}
#endif
#endif /* __PWM_STM32_H__ */