CH579M开发笔记07——GPIO输入中断检测

专栏目录:CH579M开发笔记——目录


 

功能概述

本次实验的目的是测试CH579M的引脚中断功能。采用红外遥控对应的PB2引脚作为中断触发,使用蜂鸣器对应的PB3引脚作为输出指示。

核心代码

查看代码

//分别初始化单个引脚

GPIOB_SetBits(GPIO_Pin_3);

GPIOB_ModeCfg(GPIO_Pin_3, GPIO_ModeOut_PP_5mA);




GPIOB_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PU);

GPIOB_ITModeCfg(GPIO_Pin_2, GPIO_ITMode_FallEdge); // 下降沿唤醒

NVIC_EnableIRQ(GPIO_IRQn);




    while (1) {

        if (beep_sta) {

            beep_sta = 0;

            GPIOB_SetBits(GPIO_Pin_3);

            delay_ms(50);

            GPIOB_ResetBits(GPIO_Pin_3);

            delay_ms(50);

        } else {

            GPIOB_ResetBits(GPIO_Pin_3);

        }

    }

}

void GPIO_IRQHandler(void)

{

    if (!GPIOB_ReadPortPin(GPIO_Pin_2)) {

        beep_sta = 1;

        GPIOB_ClearITFlagBit(GPIO_Pin_2);

    }

}

 

功能验证

使用烧录工具将编译后的hex文件写入开发板后,使用红外遥控器向红外探头发送信号,蜂鸣器滴滴报警,松开按键后,蜂鸣器停止发声。

 

注意事项

1、仅芯片的 32 个 I/O 管脚 PA[0]~PA[15]、PB[0]~PB[15])具有I/O中断功能,并可实现睡眠唤醒。

2、为了使用外部中断,端口位必须配置成输入模式。并提供 4 种触发模式:高电平、低电平、上升沿、下降沿。

3、唤醒功能需要打开端口位的中断使能 R16_Px_INT_EN,并开启寄存器 R8_SLP_WAKE_CTRL 中的 GPIO唤醒控制位 RB_SLP_GPIO_WAKE。

posted @ 2022-02-07 11:09  realiot  阅读(527)  评论(0)    收藏  举报