| 
					
				 | 
			
			
				@@ -1,130 +1,134 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include "stm32f0xx_hal.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include "tim.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include "led.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include "button.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#include "logic.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-TIM_HandleTypeDef    Tim16Handle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-TIM_HandleTypeDef    Tim17Handle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-extern uint16_t freq_voltage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// TIM17 - индикация нажатия курка 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// TIM16 - отвечает за частоту срабатывания строки 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void tim_init(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    __HAL_RCC_TIM16_CLK_ENABLE(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    __HAL_RCC_TIM17_CLK_ENABLE();   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Instance               = TIM16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.Period            = 1000 - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.Prescaler         = 48000 - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.ClockDivision     = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.CounterMode       = TIM_COUNTERMODE_UP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.RepetitionCounter = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim16Handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_Base_Init(&Tim16Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_NVIC_SetPriority(TIM16_IRQn, 2, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_NVIC_EnableIRQ(TIM16_IRQn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_Base_Start_IT(&Tim16Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Instance               = TIM17; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.Period            = 1000 - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.Prescaler         = 48000 - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.ClockDivision     = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.CounterMode       = TIM_COUNTERMODE_UP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.RepetitionCounter = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    Tim17Handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; //TIM_AUTORELOAD_PRELOAD_DISABLE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_Base_Init(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_NVIC_SetPriority(TIM17_IRQn, 2, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_NVIC_EnableIRQ(TIM17_IRQn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //HAL_TIM_Base_Start_IT(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void tim_set_string_timer(bool state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (state) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TIM17->CNT = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HAL_TIM_Base_Start_IT(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        HAL_TIM_Base_Stop_IT(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void tim_set_string_freq(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    TIM16->PSC = 11.707*(float)freq_voltage + 47; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    TIM17->PSC = 11.707*(float)freq_voltage + 47; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void tim_signal_start(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    __HAL_TIM_CLEAR_IT(&Tim17Handle, TIM_IT_UPDATE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_Base_Start_IT(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void tim_inf_set_time(uint16_t time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    __HAL_TIM_CLEAR_IT(&Tim16Handle, TIM_IT_UPDATE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    TIM16->ARR = time; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_Base_Start_IT(&Tim16Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (htim->Instance == TIM16)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //HAL_TIM_Base_Stop_IT(&Tim16Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 1       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (but_is_string()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            led_freq_toggle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else if (htim->Instance == TIM17)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        logic_string_next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //HAL_TIM_Base_Stop_IT(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void TIM16_IRQHandler(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_IRQHandler(&Tim16Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void TIM17_IRQHandler(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_IRQHandler(&Tim17Handle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-void TIM1_BRK_UP_TRG_COM_IRQHandler(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    HAL_TIM_IRQHandler(&TimHandle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "stm32f0xx_hal.h"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "tim.h"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "led.h"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "button.h"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "logic.h"
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TIM_HandleTypeDef    Tim16Handle;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TIM_HandleTypeDef    Tim17Handle;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+extern uint16_t freq_voltage;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TIM17 - индикация нажатия курка
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// TIM16 - отвечает за частоту срабатывания строки
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_init(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    __HAL_RCC_TIM16_CLK_ENABLE();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    __HAL_RCC_TIM17_CLK_ENABLE();  
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Instance               = TIM16;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.Period            = 1000 - 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.Prescaler         = 48000 - 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.ClockDivision     = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.CounterMode       = TIM_COUNTERMODE_UP;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.RepetitionCounter = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim16Handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_Base_Init(&Tim16Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_NVIC_SetPriority(TIM16_IRQn, 2, 0);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_NVIC_EnableIRQ(TIM16_IRQn);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_Base_Start_IT(&Tim16Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Instance               = TIM17;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.Period            = 1000 - 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.Prescaler         = 48000 - 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.ClockDivision     = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.CounterMode       = TIM_COUNTERMODE_UP;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.RepetitionCounter = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Tim17Handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; //TIM_AUTORELOAD_PRELOAD_DISABLE;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_Base_Init(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_NVIC_SetPriority(TIM17_IRQn, 2, 0);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_NVIC_EnableIRQ(TIM17_IRQn);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //HAL_TIM_Base_Start_IT(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_set_string_timer(bool state)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (state) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TIM17->CNT = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HAL_TIM_Base_Start_IT(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HAL_TIM_Base_Stop_IT(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_set_string_freq(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TIM16->PSC = 11.707*(float)freq_voltage + 47;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TIM17->PSC = 11.707*(float)freq_voltage + 47;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_signal_start(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    __HAL_TIM_CLEAR_IT(&Tim17Handle, TIM_IT_UPDATE);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_Base_Start_IT(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_inf_set_time(uint16_t time)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    __HAL_TIM_CLEAR_IT(&Tim16Handle, TIM_IT_UPDATE);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TIM16->ARR = time;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_Base_Start_IT(&Tim16Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static bool warmup = false;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (htim->Instance == TIM16) 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (but_is_string()) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            led_freq_toggle();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else if (htim->Instance == TIM17) 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (warmup) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            logic_string_next();
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warmup = true;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            HAL_TIM_Base_Stop_IT(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Сразу после настройки таймера TIM17 делаем разовое срабатывание
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void tim_warmup(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    TIM17->PSC = 47;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tim_set_string_timer(true);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void TIM16_IRQHandler(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_IRQHandler(&Tim16Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void TIM17_IRQHandler(void)
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    HAL_TIM_IRQHandler(&Tim17Handle);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+
 
			 |