47 lines
1.3 KiB
C
47 lines
1.3 KiB
C
#ifndef __RDEC_SOFT_H__
|
|
#define __RDEC_SOFT_H__
|
|
|
|
#include "typedef.h"
|
|
|
|
#define RDEC_MAX_NUM 1 //软件rdec最大支持数量
|
|
|
|
typedef enum : u8 {
|
|
RDEC_SOFT_PHASE_1, //半码
|
|
RDEC_SOFT_PHASE_2, //全码
|
|
RDEC_SOFT_PHASE_2_ADC, //全码 adc单线采集 rdec_a配置IO, rdec_b配置-1
|
|
} rdec_mode;
|
|
enum rdec_soft_err : u8 {
|
|
RDEC_SOFT_ERR_INIT_FAIL = 0xFF,
|
|
};
|
|
struct rdec_soft_config {
|
|
u32 rdec_a; //编码器A相IO口
|
|
u32 rdec_b; //编码器B相IO口
|
|
u16 filter_us; //软件滤波参数,单位:us
|
|
rdec_mode mode; //编码器工作模式
|
|
const u8 tid; //使用的timer_id, 必须手动分配固定timer_id,不能使用内部自动分配
|
|
};
|
|
|
|
/**@brief 旋转编码器(软件方式)功能初始化
|
|
* @param[in] *cfg rdec_soft_config定义的结构体指针
|
|
* @return tid:初始化成功分配的id号 -1:初始化失败
|
|
*/
|
|
u32 rdec_soft_init(const struct rdec_soft_config *cfg);
|
|
|
|
/**@brief 旋转编码器(软件方式)功能释放
|
|
* @param[in] id 初始化成功返回的id号
|
|
* @return 无
|
|
*/
|
|
void rdec_soft_deinit(u32 id);
|
|
|
|
void rdec_soft_start(u32 id);
|
|
void rdec_soft_pause(u32 id);
|
|
void rdec_soft_resume(u32 id);
|
|
|
|
/**@brief 获取计数值
|
|
* @param[in] id 初始化成功返回的id号
|
|
* @return value 当前累计的计数值,带方向
|
|
*/
|
|
int rdec_soft_get_value(u32 id);
|
|
|
|
#endif
|