31#include "generated/airframe.h"
33#include <libopencm3/stm32/rcc.h>
34#include <libopencm3/stm32/gpio.h>
35#include <libopencm3/stm32/timer.h>
36#include <libopencm3/cm3/nvic.h>
44#define ONE_MHZ_CLK 1000000
45#ifdef NVIC_TIM_IRQ_PRIO
46#define PWM_INPUT_IRQ_PRIO NVIC_TIM_IRQ_PRIO
48#define PWM_INPUT_IRQ_PRIO 2
101#if USE_PWM_INPUT_TIM8
106#if USE_PWM_INPUT_TIM9
121#if USE_PWM_INPUT1 == PWM_PULSE_TYPE_ACTIVE_LOW
124#elif USE_PWM_INPUT1 == PWM_PULSE_TYPE_ACTIVE_HIGH
137#ifdef PWM_INPUT1_IRQ2
159#if USE_PWM_INPUT2 == PWM_PULSE_TYPE_ACTIVE_LOW
162#elif USE_PWM_INPUT2 == PWM_PULSE_TYPE_ACTIVE_HIGH
175#ifdef PWM_INPUT2_IRQ2
191#if USE_PWM_INPUT_TIM1
196#elif defined(STM32F4)
220#if USE_PWM_INPUT_TIM2
241#if USE_PWM_INPUT_TIM3
262#if USE_PWM_INPUT_TIM4
283#if USE_PWM_INPUT_TIM5
304#if USE_PWM_INPUT_TIM8
309#elif defined(STM32F4)
333#if USE_PWM_INPUT_TIM9
#define PWM_INPUT2_GPIO_PORT
#define PWM_INPUT2_GPIO_AF
#define PWM_INPUT2_GPIO_PIN
#define PWM_INPUT1_TIMER_INPUT
#define TIM9_PWM_INPUT_IDX
#define PWM_INPUT2_SLAVE_TRIG
#define TIM1_CC_IF_PERIOD
#define TIM9_CC_IF_PERIOD
#define PWM_INPUT1_SLAVE_TRIG
#define PWM_INPUT1_CHANNEL_PERIOD
#define TIM1_PWM_INPUT_IDX
#define PWM_INPUT1_CHANNEL_DUTY
#define PWM_INPUT2_CHANNEL_DUTY
#define PWM_INPUT2_CHANNEL_PERIOD
#define PWM_INPUT2_TIMER_INPUT
void gpio_setup_pin_af(ioportid_t port, uint16_t pin, uint8_t af, bool is_output)
Setup a gpio for input or output with alternate function.
#define PWM_INPUT1_GPIO_PORT
#define PWM_INPUT1_GPIO_AF
#define PWM_INPUT1_GPIO_PIN
Some architecture independent helper functions for GPIOs.
uint32_t timer_get_frequency(uint32_t timer_peripheral)
Get Timer clock frequency (before prescaling) Only valid if using the internal clock for the timer.
Architecture independent timing functions.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.