本次实验采用STM32CubeMX软件进行元器件的初始化
本次实验采用的中断源为三个按键和光电开关、火焰传感器、人体红外。其实验接口分别为:
key1------>PF9 key2------>PF7 key3------>PF8(检测方式:下降沿)
光电开关------>PE15 火焰传感器------>PF5 人体红外------>PF12
实验效果: 检测中断之后,让灯状态取反
工程的配置
1、芯片图的配置
LED1/LED2/LED3(PE10/PF10/PE8)为输出模式------>配置为输出模式,给到M4核
PF9/PF7/PF8/PE15/PF5/PF12为GPIO_EXTI模式------>配置为GPIO_EXTI模式,给到M4核
2、模式的配置
转到A->Z下拉选项的GPIO中,选中PF7/PF8/PF9将其模式改为下降沿检测方式
在NVIC中勾选PF9/PF7/PF8/PE15/PF5/PF12所在栏位,并设置中断优先级(数值不重复且大于1,小于15)
3、完成配置后导出工程并在keil中编写代码
在gpio.c文件中添加中断处理函数
1)下降沿触发
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{switch(GPIO_Pin){//KEY2--->PF10case GPIO_PIN_7:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);break;//KEY3--->PE10case GPIO_PIN_8:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);break;//KEY1--->PE8case GPIO_PIN_9:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);break;}
}
2)上升沿触发
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{switch(GPIO_Pin){//PF5--->PF10case GPIO_PIN_5:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);break;//PF12--->PE10case GPIO_PIN_12:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);break;//PE15--->PE8case GPIO_PIN_15:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);break;}
}