使用I2C_ITConfig(I2C_PORT, I2C_IT_EVT, ENABLE); 使能I2C1事件中断后为什么主循环不执行
时间: 2024-08-28 12:00:53 浏览: 70
I2C_i2c_stm32f407_
当你使用`I2C_ITConfig(I2C_PORT, I2C_IT_EVT, ENABLE)`这个函数来启用I2C1的事件中断时,它意味着当指定类型的I2C事件发生时(比如接收完成、发送完成等),处理器会自动暂停当前的程序流程去处理中断。然而,主循环是否继续执行取决于你的代码设计。
如果在中断服务函数(ISR)中,没有手动返回到主循环或者对中断进行了阻塞处理,那么主循环实际上不会立即接续执行。通常的做法是在ISR中处理完中断后,需要通过调用`HAL_I2C_Master_IRQHandler结束`中断,并根据中断类型执行相应的任务后,手动跳转回主循环或者设置标志让主循环检查并继续运行。
阅读全文