你自己先定义好蜂鸣器和流水灯的运行逻辑,当外部中断发生后,在中断里做一个标记,等从中断中返回主程序后再判断这个标记,并执行相关的蜂鸣器逻辑和流水灯逻辑
while(1) //主程序
{
if (EXTI_1 == TRUE) //判断外部中断是否发生
{
RuningBEEP(); //蜂鸣器运行逻辑
RuningLED(); //流水灯运行逻辑
}
}
EXTI_Handler() //外部中断服务函数
{
if (GET_EXTI_FLAG(EXTI_1_FLAG) == TRUE) //检查硬件寄存器对应的标志是否置位
{
EXTI_1 = TRUE; //标志置位
CLEAR_EXTI_FLAG(); ///清除本中断标记防止重复进入中断
}
}
我这个假定蜂鸣器和流水灯的动作已经封装在函数里了,检测到标记产生随后就执行两个动作,也可以不用外部中断,直接检测IO电位来控制。
while(1) //主程序
{
if (EXTI_1 == TRUE) //判断外部中断是否发生
{
RuningBEEP(); //蜂鸣器运行逻辑
RuningLED(); //流水灯运行逻辑
}
}
EXTI_Handler() //外部中断服务函数
{
if (GET_EXTI_FLAG(EXTI_1_FLAG) == TRUE) //检查硬件寄存器对应的标志是否置位
{
EXTI_1 = TRUE; //标志置位
CLEAR_EXTI_FLAG(); ///清除本中断标记防止重复进入中断
}
}
我这个假定蜂鸣器和流水灯的动作已经封装在函数里了,检测到标记产生随后就执行两个动作,也可以不用外部中断,直接检测IO电位来控制。