/**
 * @brief EXTI-上升沿&下降沿均触发中断
 * @details
 * 使用P0.15作为外部中断引脚，上升沿&下降沿均触发中断。
 * 外部输入高低电平（默认低电平），记录中断发生次数。
 */
#include "lks32mc09x_exti.h"
#include "lks32mc09x_gpio.h"
#include "lks32mc09x_sys.h"
volatile uint32_t count = 0;
// EXTI中断处理函数
void GPIO_IRQHandler(void)
{
    // 检查P0.15引脚的中断标志
    if (EXTI_GetIRQFlag(EXTI0, EXTI_IF_P0_15))
    {
        // 清除中断标志
        EXTI_ClearIRQFlag(EXTI0, EXTI_IF_P0_15);
        count++;
    }
}
/**
 * @brief 主函数
 */
int main(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct);

    // 使能GPIO0时钟
    SYS_ModuleClockCmd(SYS_MODULE_GPIO, ENABLE);

    // 初始化P0.15为输入，并配置为外部中断引脚
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIO0, &GPIO_InitStruct);

    // 配置P0.15的上升沿、下降沿均触发外部中断
    EXTI_TriggerConfig(EXTI0, EXTI_CR_P0_15, EXTI_Trigger_Edge);
    EXTI_EnableIRQFlag(EXTI0, EXTI_IF_P0_15);

    // 使能EXTI0中断
    NVIC_EnableIRQ(GPIO_IRQn);
    __enable_irq();
    while (1)
    {
    }
}

