/**
 * @brief WAKE-IO唤醒
 * @details
 * P2.6设置为高电平之后进入休眠状态，P0.0输入高电平之后芯片唤醒。
 * 注意：使用深度休眠时，不能使用调试读写变量（例如debug或lksscope），会导致芯片无法正常唤醒。
 */
#include "lks32mc09x.h"
#include "lks32mc09x_adc.h"
#include "lks32mc09x_cmp.h"
#include "lks32mc09x_dac.h"
#include "lks32mc09x_gpio.h"
#include "lks32mc09x_lib.h"
#include "lks32mc09x_opa.h"
#include "lks32mc09x_reg.h"
#include "lks32mc09x_sys.h"
#include "lks32mc09x_tmp.h"
#include "lks32mc09x_wake.h"
volatile int ena = 0; // 1 进入休眠

/**
 * @brief 主函数，用于测试HSI时钟输出及GPIO翻转
 */
int main(void)
{
    // 打开所有模块，模拟实际应用场景
    ADC_Enable(ADC0);
    DAC_Enable(DAC_CHANNEL_0);
    DAC_Enable(DAC_CHANNEL_1);
    OPA_Enable(OPA_CHANNEL_0);
    OPA_Enable(OPA_CHANNEL_1);
    OPA_Enable(OPA_CHANNEL_2);
    OPA_Enable(OPA_CHANNEL_3);
    CMP_Enable(CMP_CHN_0);
    CMP_Enable(CMP_CHN_1);
    TMP_Enable();
    GPIO_Enable();
    GPIO_Config(GPIO0, GPIO_PinSource_0, GPIO_Mode_IN, GPIO_AF_GPIO);
    GPIO_Config(GPIO2, GPIO_PinSource_6, GPIO_Mode_IN, GPIO_AF_GPIO);
    while (1)
    {
        if (ena == 0)
        {
            if (GPIO_ReadInputDataBit(GPIO2, GPIO_Pin_6))
            {
                ena = 1;
                WAKE_SetWakeIO(WAKE_IO_P0_0, WAKE_TRIG_HIGH, 0, 1); // 设置为P0.0高电平触发芯片唤醒，不使用gpio滤波
                WAKE_FallSleep();                                   // 进入休眠状态
            }
        }
    }
}

void WAKE_IRQHandler()
{
}

