STM32H743 中断向量表从默认FLASH 迁移至DTCM

向量表迁移时 在ld文件中 需要注明向量表占用的长度 与后续拷贝长度一直

. = ORIGIN(DTCMRAM); /* 定位到 DTCM 起始 */

/* ---------- 1. 向量表段(固定占用 0x298 字节) ------------ /
.vector_table_dtcm (NOLOAD) : {
. = ALIGN(512); /
必须 512 字节对齐 /
_vector_table_dtcm = .; /
向量表起始 /
KEEP(
(.vector_table_dtcm)) /* 存放用户定义的向量数组 /
. = _vector_table_dtcm + 0x400; /
强制占用 0x400 字节 /
_evector_table_dtcm = .; /
向量表结束 */

在main.c开头
/* 1 复制中断向量表:从 Flash (0x08000000) 到 DTCM (0x20000000) /
/
向量表大小为 0x400 字节 (1024 字节) /
memcpy((void
)&_vector_table_dtcm, (void)0x08000000, 0x400);
/
设置中断向量表偏移量寄存器 (VTOR) 到 DTCM 的新地址 /
/
&_vector_table_dtcm 的值应为 0x20000000 */
SCB->VTOR = (uint32_t)&_vector_table_dtcm;

两处的长度0X400需要设置一样长

posted @ 2026-07-21 09:29  baiyang80  阅读(20)  评论(0)    收藏  举报