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。

浙公网安备 33010602011771号