diff --git a/stmhal/servo.c b/stmhal/servo.c index 57f1eb5d188183c0f9f6fb5acb0a464c70dbcdd8..2c9461420759d90198052fb74a40844fe1fc99a2 100644 --- a/stmhal/servo.c +++ b/stmhal/servo.c @@ -29,7 +29,7 @@ STATIC const mp_obj_type_t servo_obj_type; STATIC pyb_servo_obj_t pyb_servo_obj[PYB_SERVO_NUM]; -TIM_HandleTypeDef servo_TIM2_Handle; +TIM_HandleTypeDef TIM2_Handle; void servo_init(void) { // TIM2 clock enable @@ -40,12 +40,12 @@ void servo_init(void) { HAL_NVIC_EnableIRQ(TIM2_IRQn); // PWM clock configuration - servo_TIM2_Handle.Instance = TIM2; - servo_TIM2_Handle.Init.Period = 2000; // timer cycles at 50Hz - servo_TIM2_Handle.Init.Prescaler = ((SystemCoreClock / 2) / 100000) - 1; // timer runs at 100kHz - servo_TIM2_Handle.Init.ClockDivision = 0; - servo_TIM2_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; - HAL_TIM_PWM_Init(&servo_TIM2_Handle); + TIM2_Handle.Instance = TIM2; + TIM2_Handle.Init.Period = 2000; // timer cycles at 50Hz + TIM2_Handle.Init.Prescaler = ((SystemCoreClock / 2) / 100000) - 1; // timer runs at 100kHz + TIM2_Handle.Init.ClockDivision = 0; + TIM2_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; + HAL_TIM_PWM_Init(&TIM2_Handle); // reset servo objects for (int i = 0; i < PYB_SERVO_NUM; i++) { @@ -83,9 +83,9 @@ void servo_timer_irq_callback(void) { } } if (need_it) { - __HAL_TIM_ENABLE_IT(&servo_TIM2_Handle, TIM_IT_UPDATE); + __HAL_TIM_ENABLE_IT(&TIM2_Handle, TIM_IT_UPDATE); } else { - __HAL_TIM_DISABLE_IT(&servo_TIM2_Handle, TIM_IT_UPDATE); + __HAL_TIM_DISABLE_IT(&TIM2_Handle, TIM_IT_UPDATE); } } @@ -115,10 +115,10 @@ STATIC void servo_init_channel(pyb_servo_obj_t *s) { oc_init.Pulse = s->pulse_cur; // units of 10us oc_init.OCPolarity = TIM_OCPOLARITY_HIGH; oc_init.OCFastMode = TIM_OCFAST_DISABLE; - HAL_TIM_PWM_ConfigChannel(&servo_TIM2_Handle, &oc_init, channel); + HAL_TIM_PWM_ConfigChannel(&TIM2_Handle, &oc_init, channel); // start PWM - HAL_TIM_PWM_Start(&servo_TIM2_Handle, channel); + HAL_TIM_PWM_Start(&TIM2_Handle, channel); } /******************************************************************************/ diff --git a/stmhal/servo.h b/stmhal/servo.h index 277ccdd1c3ead83e2827f9e4d921e7e7e9cb2d9c..753ca495981ea9215f1903a3be6147d8ef37f880 100644 --- a/stmhal/servo.h +++ b/stmhal/servo.h @@ -1,4 +1,4 @@ -extern TIM_HandleTypeDef servo_TIM2_Handle; +extern TIM_HandleTypeDef TIM2_Handle; void servo_init(void); void servo_timer_irq_callback(void); diff --git a/stmhal/stm32f4xx_hal_msp.c b/stmhal/stm32f4xx_hal_msp.c index a8587c384a8b8eb47500b8d501260994294125a3..15dca56517d866cea46305f0d79dca54211e71f8 100644 --- a/stmhal/stm32f4xx_hal_msp.c +++ b/stmhal/stm32f4xx_hal_msp.c @@ -149,7 +149,7 @@ void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc) void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim == &TIM3_Handle) { USBD_CDC_HAL_TIM_PeriodElapsedCallback(); - } else if (htim == &servo_TIM2_Handle) { + } else if (htim == &TIM2_Handle) { servo_timer_irq_callback(); } } diff --git a/stmhal/stm32f4xx_it.c b/stmhal/stm32f4xx_it.c index cfd24dd3313d1fc2e673ab5d38fc563b466ce368..bd324a030dd8ac8e2490dda259b8dc7b470237a0 100644 --- a/stmhal/stm32f4xx_it.c +++ b/stmhal/stm32f4xx_it.c @@ -352,8 +352,7 @@ void RTC_WKUP_IRQHandler(void) { } void TIM2_IRQHandler(void) { - // servo timer is TIM2 - HAL_TIM_IRQHandler(&servo_TIM2_Handle); + HAL_TIM_IRQHandler(&TIM2_Handle); } void TIM3_IRQHandler(void) {