/**
 * @brief WAKE-定时唤醒
 * @details
 * 设置芯片为定时唤醒，唤醒时间为1S。
 * 注意：使用深度休眠时，不能使用调试读写变量（例如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"

/**
 * @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 (GPIO_ReadInputDataBit(GPIO2, GPIO_Pin_6))
        {
            WAKE_SetWakeInterval(IWDG_SECOND2IWDGCNT(2.0), IWDG_SECOND2IWDGCNT(1), 1); // 设置为休眠1秒后唤醒，如果没有唤醒，则2S后复位（复位功能需要先打开看门狗）
            WAKE_FallSleep();                                                          // 进入休眠状态
        }
    }
}

void WAKE_IRQHandler()
{
}

