/** PWM arch init called by generic pwm driver */ void actuators_pwm_arch_init(void) { /*----------------------------------- * Configure timer peripheral clocks *-----------------------------------*/ #if PWM_USE_TIM1 rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_TIM1EN); #endif #if PWM_USE_TIM2 rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_TIM2EN); #endif #if PWM_USE_TIM3 rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_TIM3EN); #endif #if PWM_USE_TIM4 rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_TIM4EN); #endif #if PWM_USE_TIM5 rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_TIM5EN); #endif /*---------------- * Configure GPIO *----------------*/ #if defined(STM32F1) /* TIM3 GPIO for PWM1..4 */ AFIO_MAPR |= AFIO_MAPR_TIM3_REMAP_FULL_REMAP; #endif #ifdef PWM_SERVO_0 set_servo_gpio(PWM_SERVO_0_GPIO, PWM_SERVO_0_PIN, PWM_SERVO_0_AF, PWM_SERVO_0_RCC_IOP); #endif #ifdef PWM_SERVO_1 set_servo_gpio(PWM_SERVO_1_GPIO, PWM_SERVO_1_PIN, PWM_SERVO_1_AF, PWM_SERVO_1_RCC_IOP); #endif #ifdef PWM_SERVO_2 set_servo_gpio(PWM_SERVO_2_GPIO, PWM_SERVO_2_PIN, PWM_SERVO_2_AF, PWM_SERVO_2_RCC_IOP); #endif #ifdef PWM_SERVO_3 set_servo_gpio(PWM_SERVO_3_GPIO, PWM_SERVO_3_PIN, PWM_SERVO_3_AF, PWM_SERVO_3_RCC_IOP); #endif #ifdef PWM_SERVO_4 set_servo_gpio(PWM_SERVO_4_GPIO, PWM_SERVO_4_PIN, PWM_SERVO_4_AF, PWM_SERVO_4_RCC_IOP); #endif #ifdef PWM_SERVO_5 set_servo_gpio(PWM_SERVO_5_GPIO, PWM_SERVO_5_PIN, PWM_SERVO_5_AF, PWM_SERVO_5_RCC_IOP); #endif #ifdef PWM_SERVO_6 set_servo_gpio(PWM_SERVO_6_GPIO, PWM_SERVO_6_PIN, PWM_SERVO_6_AF, PWM_SERVO_6_RCC_IOP); #endif #ifdef PWM_SERVO_7 set_servo_gpio(PWM_SERVO_7_GPIO, PWM_SERVO_7_PIN, PWM_SERVO_7_AF, PWM_SERVO_7_RCC_IOP); #endif #ifdef PWM_SERVO_8 set_servo_gpio(PWM_SERVO_8_GPIO, PWM_SERVO_8_PIN, PWM_SERVO_8_AF, PWM_SERVO_8_RCC_IOP); #endif #ifdef PWM_SERVO_9 set_servo_gpio(PWM_SERVO_9_GPIO, PWM_SERVO_9_PIN, PWM_SERVO_9_AF, PWM_SERVO_9_RCC_IOP); #endif #if PWM_USE_TIM1 set_servo_timer(TIM1, TIM1_SERVO_HZ, PWM_TIM1_CHAN_MASK); #endif #if PWM_USE_TIM2 set_servo_timer(TIM2, TIM2_SERVO_HZ, PWM_TIM2_CHAN_MASK); #endif #if PWM_USE_TIM3 set_servo_timer(TIM3, TIM3_SERVO_HZ, PWM_TIM3_CHAN_MASK); #endif #if PWM_USE_TIM4 set_servo_timer(TIM4, TIM4_SERVO_HZ, PWM_TIM4_CHAN_MASK); #endif #if PWM_USE_TIM5 set_servo_timer(TIM5, TIM5_SERVO_HZ, PWM_TIM5_CHAN_MASK); #endif }
/** PWM arch init called by generic pwm driver */ void actuators_pwm_arch_init(void) { /*----------------------------------- * Configure timer peripheral clocks *-----------------------------------*/ #if PWM_USE_TIM1 rcc_periph_clock_enable(RCC_TIM1); #endif #if PWM_USE_TIM2 rcc_periph_clock_enable(RCC_TIM2); #endif #if PWM_USE_TIM3 rcc_periph_clock_enable(RCC_TIM3); #endif #if PWM_USE_TIM4 rcc_periph_clock_enable(RCC_TIM4); #endif #if PWM_USE_TIM5 rcc_periph_clock_enable(RCC_TIM5); #endif #if PWM_USE_TIM8 rcc_periph_clock_enable(RCC_TIM8); #endif #if PWM_USE_TIM9 rcc_periph_clock_enable(RCC_TIM9); #endif #if PWM_USE_TIM12 rcc_periph_clock_enable(RCC_TIM12); #endif /*---------------- * Configure GPIO *----------------*/ #if defined(STM32F1) /* TIM3 GPIO for PWM1..4 */ AFIO_MAPR |= AFIO_MAPR_TIM3_REMAP_FULL_REMAP; #endif #ifdef PWM_SERVO_0 set_servo_gpio(PWM_SERVO_0_GPIO, PWM_SERVO_0_PIN, PWM_SERVO_0_AF, PWM_SERVO_0_RCC); #endif #ifdef PWM_SERVO_1 set_servo_gpio(PWM_SERVO_1_GPIO, PWM_SERVO_1_PIN, PWM_SERVO_1_AF, PWM_SERVO_1_RCC); #endif #ifdef PWM_SERVO_2 set_servo_gpio(PWM_SERVO_2_GPIO, PWM_SERVO_2_PIN, PWM_SERVO_2_AF, PWM_SERVO_2_RCC); #endif #ifdef PWM_SERVO_3 set_servo_gpio(PWM_SERVO_3_GPIO, PWM_SERVO_3_PIN, PWM_SERVO_3_AF, PWM_SERVO_3_RCC); #endif #ifdef PWM_SERVO_4 set_servo_gpio(PWM_SERVO_4_GPIO, PWM_SERVO_4_PIN, PWM_SERVO_4_AF, PWM_SERVO_4_RCC); #endif #ifdef PWM_SERVO_5 set_servo_gpio(PWM_SERVO_5_GPIO, PWM_SERVO_5_PIN, PWM_SERVO_5_AF, PWM_SERVO_5_RCC); #endif #ifdef PWM_SERVO_6 set_servo_gpio(PWM_SERVO_6_GPIO, PWM_SERVO_6_PIN, PWM_SERVO_6_AF, PWM_SERVO_6_RCC); #endif #ifdef PWM_SERVO_7 set_servo_gpio(PWM_SERVO_7_GPIO, PWM_SERVO_7_PIN, PWM_SERVO_7_AF, PWM_SERVO_7_RCC); #endif #ifdef PWM_SERVO_8 set_servo_gpio(PWM_SERVO_8_GPIO, PWM_SERVO_8_PIN, PWM_SERVO_8_AF, PWM_SERVO_8_RCC); #endif #ifdef PWM_SERVO_9 set_servo_gpio(PWM_SERVO_9_GPIO, PWM_SERVO_9_PIN, PWM_SERVO_9_AF, PWM_SERVO_9_RCC); #endif #ifdef PWM_SERVO_10 set_servo_gpio(PWM_SERVO_10_GPIO, PWM_SERVO_10_PIN, PWM_SERVO_10_AF, PWM_SERVO_10_RCC); #endif #ifdef PWM_SERVO_11 set_servo_gpio(PWM_SERVO_11_GPIO, PWM_SERVO_11_PIN, PWM_SERVO_11_AF, PWM_SERVO_11_RCC); #endif #if PWM_USE_TIM1 set_servo_timer(TIM1, TIM1_SERVO_HZ, PWM_TIM1_CHAN_MASK); #endif #if PWM_USE_TIM2 set_servo_timer(TIM2, TIM2_SERVO_HZ, PWM_TIM2_CHAN_MASK); #endif #if PWM_USE_TIM3 set_servo_timer(TIM3, TIM3_SERVO_HZ, PWM_TIM3_CHAN_MASK); #endif #if PWM_USE_TIM4 set_servo_timer(TIM4, TIM4_SERVO_HZ, PWM_TIM4_CHAN_MASK); #endif #if PWM_USE_TIM5 set_servo_timer(TIM5, TIM5_SERVO_HZ, PWM_TIM5_CHAN_MASK); #endif #if PWM_USE_TIM8 set_servo_timer(TIM8, TIM8_SERVO_HZ, PWM_TIM8_CHAN_MASK); #endif #if PWM_USE_TIM9 set_servo_timer(TIM9, TIM9_SERVO_HZ, PWM_TIM9_CHAN_MASK); #endif #if PWM_USE_TIM12 set_servo_timer(TIM12, TIM12_SERVO_HZ, PWM_TIM12_CHAN_MASK); #endif }