/**
 * @brief QEP-双向计数模式
 * @details
 * 设置P2.11(QEP0_CH0), P2.12(QEP0_CH1)和P0.13（QEP0_Z）
 */
#include "lks32mc09x_gpio.h"
#include "lks32mc09x_qep.h"

volatile uint32_t qep_cnt;
/**
 * @brief 主函数
 */
int main(void)
{
    // 配置QEP模块
    QEP_InitTypeDef QEP_InitStruct;
    QEP_StructInit(&QEP_InitStruct); // 初始化QEP结构体为默认值

    QEP_InitStruct.Mode = QEP_Mode_CCWCW_UpDown; ///< 编码器模式选择
    QEP_InitStruct.FE_CNT_EN = ENABLE;             ///< 下降沿计数使能
    QEP_InitStruct.ZC = QEP_ZC_NONE;               ///< 上升沿清零
    QEP_InitStruct.TH = 65535;                     ///< QEP计数门限寄存器
    QEP_InitStruct.ClockDiv = 0;                   ///< 时钟分频
    QEP_InitStruct.Filter = 0;                     ///< 信号输入滤波
    QEP_InitStruct.IRQEna = 0;                     ///< 中断使能
    QEP_Init(QEP0, &QEP_InitStruct);               // 初始化QEP0模块

    // 配置需要使用的gpio
    GPIO_Config(GPIO2, GPIO_PinSource_11, GPIO_Mode_IN, GPIO_AF_QEP0);
    GPIO_Config(GPIO2, GPIO_PinSource_12, GPIO_Mode_IN, GPIO_AF_QEP0);
    GPIO_Config(GPIO0, GPIO_PinSource_13, GPIO_Mode_IN, GPIO_AF_QEP0);

    // 主循环
    while (1)
    {
        qep_cnt = QEP_GetCount(QEP0);
    }
}

