|
|
@ -11,34 +11,34 @@ static uint32_t driven_encoder_gear_lastprocess = 0; |
|
|
|
static bool camera_encoder_light_state; |
|
|
|
static bool driven_encoder_light_state; |
|
|
|
|
|
|
|
static encoder_t m_uarts[] = { |
|
|
|
static encoder_t m_encoders[] = { |
|
|
|
{&camera_encoder, TIM_CHANNEL_1 | TIM_CHANNEL_2}, // 相机编码器 |
|
|
|
{&driven_encoder_gear, TIM_CHANNEL_1 | TIM_CHANNEL_2} // 从动编码器 |
|
|
|
}; |
|
|
|
|
|
|
|
void encoder_all_start(void) |
|
|
|
{ |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_encoders) / sizeof(encoder_t)); i++) |
|
|
|
{ |
|
|
|
HAL_TIM_Encoder_Start(m_uarts[i].tim_handler, m_uarts[i].tim_channel); |
|
|
|
HAL_TIM_Encoder_Start(m_encoders[i].tim_handler, m_encoders[i].tim_channel); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void encoder_all_stop(void) |
|
|
|
{ |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_encoders) / sizeof(encoder_t)); i++) |
|
|
|
{ |
|
|
|
HAL_TIM_Encoder_Stop(m_uarts[i].tim_handler, m_uarts[i].tim_channel); |
|
|
|
HAL_TIM_Encoder_Stop(m_encoders[i].tim_handler, m_encoders[i].tim_channel); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
bool encoder_clear_counter(encoder_usage_t encoder) |
|
|
|
{ |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_encoders) / sizeof(encoder_t)); i++) |
|
|
|
{ |
|
|
|
if (encoder == i) |
|
|
|
{ |
|
|
|
__HAL_TIM_GET_COUNTER(m_uarts[i].tim_handler) = 0; |
|
|
|
__HAL_TIM_GET_COUNTER(m_encoders[i].tim_handler) = 0; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
@ -48,9 +48,9 @@ bool encoder_clear_counter(encoder_usage_t encoder) |
|
|
|
|
|
|
|
void encoder_all_clear_counter(void) |
|
|
|
{ |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++) |
|
|
|
for (uint8_t i = 0; i < (sizeof(m_encoders) / sizeof(encoder_t)); i++) |
|
|
|
{ |
|
|
|
__HAL_TIM_GET_COUNTER(m_uarts[i].tim_handler) = 0; // 计数器值重新置位 |
|
|
|
__HAL_TIM_GET_COUNTER(m_encoders[i].tim_handler) = 0; // 计数器值重新置位 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -60,13 +60,13 @@ bool encoder_read_with_encoder(encoder_usage_t encoder, uint32_t *encoder_value) |
|
|
|
switch (encoder) |
|
|
|
{ |
|
|
|
case CAMERA_ENCODER: |
|
|
|
*encoder_value += (short)__HAL_TIM_GET_COUNTER(m_uarts[encoder].tim_handler); |
|
|
|
__HAL_TIM_GET_COUNTER(m_uarts[encoder].tim_handler) = 0; /* 清零 */ |
|
|
|
*encoder_value += (short)__HAL_TIM_GET_COUNTER(m_encoders[encoder].tim_handler); |
|
|
|
__HAL_TIM_GET_COUNTER(m_encoders[encoder].tim_handler) = 0; /* 清零 */ |
|
|
|
get_encoder_value_flag = true; |
|
|
|
break; |
|
|
|
case DRIVEN_ENCODER_GEAR: |
|
|
|
*encoder_value += (short)__HAL_TIM_GET_COUNTER(m_uarts[encoder].tim_handler); |
|
|
|
__HAL_TIM_GET_COUNTER(m_uarts[encoder].tim_handler) = 0; /* 清零 */ |
|
|
|
*encoder_value += (short)__HAL_TIM_GET_COUNTER(m_encoders[encoder].tim_handler); |
|
|
|
__HAL_TIM_GET_COUNTER(m_encoders[encoder].tim_handler) = 0; /* 清零 */ |
|
|
|
get_encoder_value_flag = true; |
|
|
|
break; |
|
|
|
|
|
|
@ -299,13 +299,3 @@ void encoder_switch_toggle_on_off_state(encoder_usage_t encoder) |
|
|
|
// error |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void encoder_data_acquisition_schedule(void) |
|
|
|
{ |
|
|
|
static uint32_t acquisition_lastprocess; |
|
|
|
if (sys_haspassedms(acquisition_lastprocess) > 1) |
|
|
|
{ |
|
|
|
acquisition_lastprocess = HAL_GetTick(); |
|
|
|
printf("acquisition_lastprocess:%d\r\n", acquisition_lastprocess); |
|
|
|
} |
|
|
|
} |