FSP配置的中断会注册在vector_data.c中的数组g_vector_table
image.png
image.png
BSP_PLACE_IN_SECTION(BSP_SECTION_APPLICATION_VECTORS)
指定编译器将其放在了段BSP_SECTION_APPLICATION_VECTORS
即".application_vectors"中
链接脚本中该段位于固定向量fixed_vectors
之后
image.png
而固定向量放置的是内核异常
image.png
那么就可以看到上述数组中的向量即内核异常之后的中断。这样硬件就可以通过向量号找到这个中断入口了。
当然启动代码要设置向量地址为固定像地址处,后面编译器紧接着放用户中断
image.png
瑞萨的中断除了在ARMNVIC基础上,还可以配置中断号对应哪个外设中断
vector_data.c中的g_interrupt_event_link_select数组指定
比如图中0号向量对应BSP_PRV_IELS_ENUM(EVENT_ICU_IRQ0)
image.png
即通过宏指定为ELC_EVENT_ICU_IRQ0这个表格可以手动改,也可以fsp自动生成
image.png
函数bsp_irq_cfg
根据该表格进行配置
image.png
这样以上中断产生就可以通过向量号对应到中断函数入口g_vector_table
这个数组的索引即中断向量号。
而g_vector_table
指定中断向量号对应哪个外设事件
比如[0] = BSP_PRV_IELS_ENUM(EVENT_ICU_IRQ0), /* ICU IRQ0 (External pin interrupt 0) */
表示中断向量0对应事件ELC_EVENT_ICU_IRQ0