api-hal-tim.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "api-hal-tim_i.h"
  2. #include "api-hal-irda_i.h"
  3. #include <stm32wbxx_ll_tim.h>
  4. #include <furi.h>
  5. void TIM2_IRQHandler(void)
  6. {
  7. bool consumed = false;
  8. if(LL_TIM_IsActiveFlag_CC1(TIM2) == 1) {
  9. if (LL_TIM_IsEnabledIT_CC1(TIM2)) {
  10. LL_TIM_ClearFlag_CC1(TIM2);
  11. if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) {
  12. // input capture
  13. api_hal_irda_tim_isr(TimerIRQSourceCCI1);
  14. consumed = true;
  15. }
  16. else {
  17. // output compare
  18. // HAL_TIM_OC_DelayElapsedCallback(htim);
  19. // HAL_TIM_PWM_PulseFinishedCallback(htim);
  20. }
  21. }
  22. }
  23. if(LL_TIM_IsActiveFlag_CC2(TIM2) == 1) {
  24. if (LL_TIM_IsEnabledIT_CC2(TIM2)) {
  25. LL_TIM_ClearFlag_CC2(TIM2);
  26. if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) {
  27. // input capture
  28. api_hal_irda_tim_isr(TimerIRQSourceCCI2);
  29. consumed = true;
  30. }
  31. else {
  32. // output compare
  33. // HAL_TIM_OC_DelayElapsedCallback(htim);
  34. // HAL_TIM_PWM_PulseFinishedCallback(htim);
  35. }
  36. }
  37. }
  38. furi_check(consumed);
  39. }