diff --git a/usersrc/encoder.c b/usersrc/encoder.c index dcf554f..8c0968f 100644 --- a/usersrc/encoder.c +++ b/usersrc/encoder.c @@ -18,6 +18,7 @@ void encoder_all_start(void) HAL_TIM_Encoder_Start(m_uarts[i].tim_handler, m_uarts[i].tim_channel); } } + void encoder_all_stop(void) { for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) @@ -26,6 +27,28 @@ void encoder_all_stop(void) } } +bool encoder_clear_counter(TIM_HandleTypeDef *tim_handler) +{ + for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) + { + if (tim_handler == m_uarts[i].tim_handler) + { + __HAL_TIM_GET_COUNTER(tim_handler) = 0; + return true; + } + } + + return false; +} + +void encoder_all_clear_counter(void) +{ + for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) + { + __HAL_TIM_GET_COUNTER(m_uarts[i].tim_handler) = 0; // 计数器值重新置位 + } +} + void encoder_read_printf(void) { for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) diff --git a/usersrc/encoder.h b/usersrc/encoder.h index 6b273e5..dcf66c0 100644 --- a/usersrc/encoder.h +++ b/usersrc/encoder.h @@ -1,5 +1,6 @@ #pragma once #include "main.h" +#include typedef struct { @@ -9,4 +10,6 @@ typedef struct void encoder_all_start(void); void encoder_all_stop(void); +bool encoder_clear_counter(TIM_HandleTypeDef *tim_handler); +void encoder_all_clear_counter(void); void encoder_read_printf(void);