You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.3 KiB
37 lines
1.3 KiB
#include "encoder.h"
|
|
#include "zboard.h"
|
|
#include <stdio.h>
|
|
|
|
static int Direction;
|
|
static int CaptureNumber;
|
|
|
|
static encoder_t m_uarts[] = {
|
|
{&camera_encoder, TIM_CHANNEL_1 | TIM_CHANNEL_2}, // 相机编码器
|
|
{&driven_encoder_gear, TIM_CHANNEL_1 | TIM_CHANNEL_2} // 从动编码器
|
|
};
|
|
|
|
void encoder_start(void)
|
|
{
|
|
/* 不开启会导致程序无法启动,原因未知 */
|
|
HAL_TIM_Encoder_Start(&camera_encoder, TIM_CHANNEL_1 | TIM_CHANNEL_2);
|
|
HAL_TIM_Encoder_Start(&driven_encoder_gear, TIM_CHANNEL_1 | TIM_CHANNEL_2);
|
|
}
|
|
void encoder_stop(void)
|
|
{
|
|
HAL_TIM_Encoder_Stop(&camera_encoder, TIM_CHANNEL_1 | TIM_CHANNEL_2);
|
|
HAL_TIM_Encoder_Stop(&driven_encoder_gear, TIM_CHANNEL_1 | TIM_CHANNEL_2);
|
|
}
|
|
|
|
void encoder_read_printf(void)
|
|
{
|
|
for (uint8_t i = 0; i < (sizeof(m_uarts) / sizeof(encoder_t)); i++)
|
|
{
|
|
Direction = __HAL_TIM_IS_TIM_COUNTING_DOWN(m_uarts[i].tim_handler); // 读取电机转动方向
|
|
CaptureNumber = (short)__HAL_TIM_GET_COUNTER(m_uarts[i].tim_handler); // 读取编码器数据
|
|
__HAL_TIM_GET_COUNTER(m_uarts[i].tim_handler) = 0; // 计数器值重新置位
|
|
if (CaptureNumber != 0)
|
|
{
|
|
printf("Encoder number:%d,Direction is %d,CaptureNumber is %d\r\n", i, Direction, CaptureNumber);
|
|
}
|
|
}
|
|
}
|