| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #include "stm32g4xx_hal.h"
- #include "hal_callback.h"
- #include "terminal_usartbridge.h"
- #include "uart_bridge.h"
- #include "menu.h"
- #include "config.h"
- #include <stdio.h>
- #define DBG if (1)
- 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;
- //uint32_t tick = HAL_GetTick();
-
- if (GPIO_Pin == GPIO_PIN_4)
- {
- //DBG HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
- //menu_send_event(CONTROL_PUSH);
- #if 1
- if (push_flag == false) {
- push_flag = true;
- delay_cnt = HAL_GetTick();
- }
- if (push_flag == true) {
- if ((HAL_GetTick() - delay_cnt) > BUTTON_GLICH_TIMEOUT) {
- push_flag = false;
- DBG HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
- menu_send_event(CONTROL_PUSH);
- }
- }
- #endif
- }
- }
- // -------------------------------------------------------------------------- //
- // UART //
- // -------------------------------------------------------------------------- //
- void UART_RxCpltCallback(UART_HandleTypeDef *huart);
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- switch((uint32_t)huart->Instance)
- {
- case USART3_BASE : // HAL USART Terminal
- HAL_UART_RxCpltCallbackTerminal();
- break;
- case USART2_BASE :
- usart_bridge_rx_cb();
- break;
-
- default : break;
- }
- }
- void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
- {
- switch((uint32_t)huart->Instance)
- {
- case USART3_BASE : // HAL USART Terminal
- HAL_UART_RxCpltCallbackTerminal();
- break;
- case USART2_BASE :
- usart_bridge_rx_cb();
- break;
-
- default : break;
- }
- }
- // -------------------------------------------------------------------------- //
- // TIM //
- // -------------------------------------------------------------------------- //
- //
- void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
- {
- switch((uint32_t)htim->Instance)
- {
- case TIM2_BASE :
- encoder_handler();
- break;
-
- default : break;
- }
- }
- //
- static void encoder_handler(void)
- {
- //static uint8_t frw_cnt = 0;
- //static uint8_t back_cnt = 0;
-
- if (TIM2->CR1 & TIM_CR1_DIR)
- {
- menu_send_event(CONTROL_BACK);
-
- #if 0
- if (++back_cnt >= ENC_SOFT_FILTER_CNT)
- {
- menu_send_event(CONTROL_BACK);
- DBG printf("Encoder back\r\n");
- back_cnt = 0;
- return;
- }
- back_cnt++;
- #endif
- }
- else
- {
- menu_send_event(CONTROL_FWD);
- #if 0
- if (++frw_cnt >= ENC_SOFT_FILTER_CNT) {
- menu_send_event(CONTROL_FWD);
- DBG printf("Encoder forward\r\n");
- frw_cnt = 0;
- return;
- }
- frw_cnt++;
- #endif
- }
- }
|