SG 3 лет назад
Родитель
Сommit
d5d1de0481
1 измененных файлов с 10 добавлено и 3 удалено
  1. 10 3
      speaker_hal.c

+ 10 - 3
speaker_hal.c

@@ -21,9 +21,16 @@ void tracker_speaker_play(float frequency, float pwm) {
         compare_value = 1;
         compare_value = 1;
     }
     }
 
 
-    LL_TIM_SetAutoReload(FURI_HAL_SPEAKER_TIMER, autoreload);
-    LL_TIM_OC_SetCompareCH1(FURI_HAL_SPEAKER_TIMER, compare_value);
-    LL_TIM_GenerateEvent_UPDATE(FURI_HAL_SPEAKER_TIMER);
+    if(LL_TIM_OC_GetCompareCH1(FURI_HAL_SPEAKER_TIMER) != compare_value) {
+        LL_TIM_OC_SetCompareCH1(FURI_HAL_SPEAKER_TIMER, compare_value);
+    }
+
+    if(LL_TIM_GetAutoReload(FURI_HAL_SPEAKER_TIMER) != autoreload) {
+        LL_TIM_SetAutoReload(FURI_HAL_SPEAKER_TIMER, autoreload);
+        if(LL_TIM_GetCounter(FURI_HAL_SPEAKER_TIMER) > autoreload) {
+            LL_TIM_SetCounter(FURI_HAL_SPEAKER_TIMER, 0);
+        }
+    }
 
 
     LL_TIM_EnableAllOutputs(FURI_HAL_SPEAKER_TIMER);
     LL_TIM_EnableAllOutputs(FURI_HAL_SPEAKER_TIMER);
 }
 }