| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #include "stm32g4xx_hal.h"
- #include "hal_callback.h"
- #include "terminal_usartbridge.h"
- #include "uart_bridge.h"
- #include "menu.h"
- #include <stdio.h>
- #define DBG if (0)
- #define ENC_SOFT_FILTER_CNT 3
- static void encoder_handler(void);
- // -------------------------------------------------------------------------- //
- // 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)
- {
- if (++back_cnt > ENC_SOFT_FILTER_CNT)
- {
- menu_send_event(CONTROL_BACK);
- DBG printf("Encoder back\r\n");
- back_cnt = 0;
- return;
- }
- back_cnt++;
- }
- else
- {
- if (++frw_cnt > ENC_SOFT_FILTER_CNT) {
- menu_send_event(CONTROL_FWD);
- DBG printf("Encoder forward\r\n");
- frw_cnt = 0;
- return;
- }
- frw_cnt++;
- }
- }
|