Просмотр исходного кода

[FL-1367] fix rfid on f6 target (#500)

* RFID hal: fix gpio setup
* timers hal: crutch for HAL
* RFID hal: fix gpio setup
SG 4 лет назад
Родитель
Сommit
a93f21dfbe
2 измененных файлов с 18 добавлено и 19 удалено
  1. 2 2
      firmware/targets/f6/api-hal/api-hal-rfid.c
  2. 16 17
      firmware/targets/f6/api-hal/api-hal-tim.c

+ 2 - 2
firmware/targets/f6/api-hal/api-hal-rfid.c

@@ -27,7 +27,7 @@ void api_hal_rfid_pins_emulate() {
 
     // pull pin to timer out
     hal_gpio_init_ex(
-        &gpio_rfid_pull, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1);
+        &gpio_rfid_pull, GpioModeAltFunctionPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM2);
 
     // pull rfid antenna from carrier side
     hal_gpio_init(&gpio_rfid_carrier_out, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo);
@@ -45,7 +45,7 @@ void api_hal_rfid_pins_read() {
 
     // carrier pin to timer out
     hal_gpio_init_ex(
-        &gpio_rfid_carrier_out, GpioModeOutputPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1);
+        &gpio_rfid_carrier_out, GpioModeAltFunctionPushPull, GpioSpeedLow, GpioPullNo, GpioAltFn1TIM1);
 
     // comparator in
     hal_gpio_init(&gpio_rfid_data_in, GpioModeAnalog, GpioSpeedLow, GpioPullNo);

+ 16 - 17
firmware/targets/f6/api-hal/api-hal-tim.c

@@ -3,44 +3,43 @@
 #include <stm32wbxx_ll_tim.h>
 #include <furi.h>
 
-
-void TIM2_IRQHandler(void)
-{
+void TIM2_IRQHandler(void) {
     bool consumed = false;
 
     if(LL_TIM_IsActiveFlag_CC1(TIM2) == 1) {
-        if (LL_TIM_IsEnabledIT_CC1(TIM2)) {
+        if(LL_TIM_IsEnabledIT_CC1(TIM2)) {
             LL_TIM_ClearFlag_CC1(TIM2);
 
-            if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) {
+            if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) {
                 // input capture
                 api_hal_irda_tim_isr(TimerIRQSourceCCI1);
                 consumed = true;
-            }
-            else {
+            } else {
                 // output compare
-            //  HAL_TIM_OC_DelayElapsedCallback(htim);
-            //  HAL_TIM_PWM_PulseFinishedCallback(htim);
+                //  HAL_TIM_OC_DelayElapsedCallback(htim);
+                //  HAL_TIM_PWM_PulseFinishedCallback(htim);
             }
         }
     }
     if(LL_TIM_IsActiveFlag_CC2(TIM2) == 1) {
-        if (LL_TIM_IsEnabledIT_CC2(TIM2)) {
+        if(LL_TIM_IsEnabledIT_CC2(TIM2)) {
             LL_TIM_ClearFlag_CC2(TIM2);
 
-            if (READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) {
+            if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) {
                 // input capture
                 api_hal_irda_tim_isr(TimerIRQSourceCCI2);
                 consumed = true;
-            }
-            else {
+            } else {
                 // output compare
-            //  HAL_TIM_OC_DelayElapsedCallback(htim);
-            //  HAL_TIM_PWM_PulseFinishedCallback(htim);
+                //  HAL_TIM_OC_DelayElapsedCallback(htim);
+                //  HAL_TIM_PWM_PulseFinishedCallback(htim);
             }
         }
     }
 
-    furi_check(consumed);
+    // TODO move all timers on LL hal
+    if(!consumed) {
+        // currently backed up with a crutch, we need more bicycles
+        HAL_TIM_IRQHandler(&htim2);
+    }
 }
-