Files
AC707N/SDK/interface/driver/cpu/periph/rdec_soft.h
T
2025-12-03 11:12:34 +08:00

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