请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 工具/软件:Code Composer Studio
链接器脚本中的这个部分--.vtable --包含什么内容?这部分包含向量表的副本? 如果是这样、为什么它已经驻留在闪存中、所以被复制到 SRAM 中
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
链接器脚本中的这个部分--.vtable --包含什么内容?这部分包含向量表的副本? 如果是这样、为什么它已经驻留在闪存中、所以被复制到 SRAM 中
您好!
如果您没有使用任何运行时中断处理程序注册、则甚至不需要链接器命令文件中的.vtable。 但是、如果您确实希望使用运行时中断处理程序注册、则需要定义.vtable。 请参阅以下摘录。 您可以在外设驱动程序库用户指南中找到详细信息。
此帖子也可能有用。
您好!
如果这是您所指的向量寄存器、则无需更改 NVIC_vtable。 请参阅以下代码。 将在 API 中更新 NVIC_vtable。
void IntRegister (uint32_t ui32中断、void (* pfnHandler)(void) ){ uint32_t ui32Idx、ui32Value; // //检查参数。 // assert (ui32中断< NUM_INTERRUPTS); // //确保 RAM 矢量表正确对齐。 // assert ((((uint32_t) g_pfnRAMVectors & 0x000003ff)== 0); // //查看 RAM 矢量表是否已初始化。 // if (HWREG (NVIC_vtable)!=(uint32_t) g_pfnRAMVectors) { // //将矢量表从闪存的开头复制到 RAM 矢量 //表。 // ui32Value = HWREG (NVIC_vtable); for (ui32Idx = 0;ui32Idx < NUM_INTERRUPTS;ui32Idx++) { G_pfnRAMVectors [ui32Idx]=(void (*)(void)) HWREG (((ui32Idx * 4)+ ui32Value); } // //将 NVIC 指向 RAM 矢量表。 // HWREG (NVIC_vtable)=(uint32_t) g_pfnRAMVectors; } // //保存中断处理程序。 // G_pfnRAMVectors [ui32Interrupt]= pfnHandler; }