Selaa lähdekoodia

Кнопка энкодера теперь работает.

TelenkovDmitry 2 viikkoa sitten
vanhempi
commit
8f7701c150

+ 17 - 1
desk/modules/menu/control.cpp

@@ -68,7 +68,7 @@ void init_gpio_encoder(void)
     
     __HAL_RCC_GPIOA_CLK_ENABLE();
     __HAL_RCC_GPIOB_CLK_ENABLE();
-    
+        
     GPIO_InitStruct.Pin = GPIO_PIN_0;
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
     GPIO_InitStruct.Pull = GPIO_PULLUP;
@@ -78,6 +78,17 @@ void init_gpio_encoder(void)
     
     GPIO_InitStruct.Pin = GPIO_PIN_3;
     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+    
+    // Кнопка энкодера
+    GPIO_InitStruct.Pin = GPIO_PIN_4;
+    GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
+    GPIO_InitStruct.Pull = GPIO_PULLUP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+    
+    HAL_NVIC_SetPriority(EXTI4_IRQn, 6, 0);
+    HAL_NVIC_EnableIRQ(EXTI4_IRQn);
+    
 }
 
 //
@@ -96,6 +107,11 @@ void TIM2_IRQHandler(void)
 {
     HAL_TIM_IRQHandler(&htim2);
 }
+
+void EXTI4_IRQHandler(void)
+{
+    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);
+}
 }
 
 

+ 26 - 0
desk/user/hal_callback.cpp

@@ -11,6 +11,32 @@
 
 static void encoder_handler(void);
 
+
+// -------------------------------------------------------------------------- //
+//                                  EXTI                                      //
+// -------------------------------------------------------------------------- //
+
+void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
+{
+    static uint32_t delay_cnt = 0;
+    static bool push_flag = false;
+    
+    if (GPIO_Pin == GPIO_PIN_4)
+    {
+        if (push_flag == false) {
+            push_flag = true;
+            delay_cnt = HAL_GetTick();
+        }
+        if (push_flag == true) {
+            if ((HAL_GetTick() - delay_cnt) > 50) {
+                push_flag = false;
+                DBG HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
+                menu_send_event(CONTROL_PUSH);
+            }
+        }
+    }
+}
+
 // -------------------------------------------------------------------------- //
 //                                  UART                                      //
 // -------------------------------------------------------------------------- //

+ 0 - 5
desk/user/main.cpp

@@ -27,11 +27,6 @@ int main()
     HAL_Init();
     
     SystemClock_Config();
-    
-    MX_GPIO_Init();
-    
-    //MX_I2C1_Init();
-    
    
     osThreadDef(Startup, StartupTask, osPriorityNormal, 0, 2*128);
     startupTaskHandle = osThreadCreate(osThread(Startup), NULL);

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
project/ewarm/settings/tuber.wsdt


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä