/**
 * @brief CLU-与门
 * @details
 * 使用clu实现与门逻辑，使用P0.0(A)P0.6(B)两个IO口，结果输出到P2.6
 */
#include "lks32mc09x_clu.h"
#include "lks32mc09x_gpio.h"
#include "lks32mc09x_sys.h"
/**
 * @brief 主函数，用于测试HSI时钟输出及GPIO翻转
 */
int main(void)
{
    SYS_ModuleClockCmd(SYS_MODULE_GPIO, ENABLE);
    SYS_ModuleClockCmd(SYS_MODULE_CL0, ENABLE);
    CLU_InitTypeDef cluconfig;

    CLU_StructInit(&cluconfig);

    cluconfig.EN = ENABLE;             ///< 模块使能 0关闭模块 1打开模块
    cluconfig.FIE = DISABLE;           ///< 下降沿中断使能
    cluconfig.RIE = DISABLE;           ///< 上升沿中断使能
    cluconfig.MXA = CLU_MXA_CLU0_P0_0; ///< A输入复用选择 格式 CLU_MXA_CLUa_b a取值范围为[0 1 2 3] 对应不同的CLU b表示选择不同的输入信号
    cluconfig.MXB = CLU_MXB_CLU0_P0_6; ///< B输入复用选择 格式 CLU_MXB_CLUa_b a取值范围为[0 1 2 3] 对应不同的CLU b表示选择不同的输入信号
    cluconfig.FN = CLU_FN_A_B;         ///< 真值表 格式 CLU_FN_x x取值范围为[A NOTA A_NOTB ...]对应为最简与或式下的最小相 例如 y=a+bc+!c 表示为 CLU_FN_A|CLU_FN_B_C|CLU_FN_NOTC
    cluconfig.OUTSEL = 1;              ///< 输出选择 0: D 触发器输出 1: LUT 输出
    cluconfig.OEN = 1;                 ///< 输出使能 0: 关闭 1: 使能
    cluconfig.CLKINV = 0;              ///< D 触发器时钟电平 0: 同相 1: 反向
    cluconfig.CLKSEL = 0;              ///< D 触发器时钟选择 0x0: 进位输入 0x1: MXA 输入 0x2: ALTCLK0 0x3: ALTCLK1
    CLU_Init(CLU, CLU_MODEL_CLU0, &cluconfig);
    GPIO_Config(GPIO0, GPIO_PinSource_0, GPIO_Mode_IN, GPIO_AF_CL);
    GPIO_Config(GPIO0, GPIO_PinSource_6, GPIO_Mode_IN, GPIO_AF_CL);
    GPIO_Config(GPIO2, GPIO_PinSource_6, GPIO_Mode_OUT, GPIO_AF_CL);
    while (1)
    {
    }
}

