csz9981 发表于 2019-4-19 09:05:54

STM32中断行为是怎样跳转到EXTI9_5_IRQHandler函数的?

STM32自己写的中断服务函数名必须与启动文件中预设的中断服务函数名一样吗?如果不一样,会怎样?PB6产生下降沿,满足中断条件后,中断行为是怎样被触发的,程序是怎样跳转到EXTI9_5_IRQHandler函数的?

toofree 发表于 2019-4-19 09:57:36

用标准函数库时,中断服务函数名必须与启动文件中一致。不一致会怎么样,那就是找不到中断服务函数,自然也没办法执行。用HAL库的时候,中断服务函数已经写好,但是用户需要写中断回调函数,用户不用管理中断,只需关心中断服务后要干的活。

中断如何触发,这个是硬件触发,是中断源和CPU打交道,用户不需要关心。
用户只需要开启相应中断,和设置中断模式,这都相当于是一个开关。有了中断事件后,硬件触发中断控制器,中断控制器又通知CPU,并提供相应中断服务函数入口地址。CPU得到中断后,把当前运行的PC指针和其它必要参数压栈,去执行中断服务。执行完中断后,恢复现场,返回继续执行原来主程序。

Dylan疾风闪电 发表于 2019-4-19 11:28:03

STM32自己写的中断服务函数名必须与启动文件中预设的中断服务函数名一样吗?如果不一样,会怎样?
必须一致,否则会由于找不到入口函数,触发HardFault_Handler

PB6产生下降沿,满足中断条件后,中断行为是怎样被触发的,程序是怎样跳转到EXTI9_5_IRQHandler函数的?
debug然后看Disassembly中的汇编,你就知道怎么执行的了

csz9981 发表于 2019-4-19 20:25:07

Dylan疾风闪电 发表于 2019-4-19 11:28
STM32自己写的中断服务函数名必须与启动文件中预设的中断服务函数名一样吗?如果不一样,会怎样?
必须一致 ...

感谢,回头我再试试。

csz9981 发表于 2019-4-19 20:28:56

toofree 发表于 2019-4-19 09:57
用标准函数库时,中断服务函数名必须与启动文件中一致。不一致会怎么样,那就是找不到中断服务函数,自然也 ...

感谢,说明比较详细,学习了。
页: [1]
查看完整版本: STM32中断行为是怎样跳转到EXTI9_5_IRQHandler函数的?