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需要设置一样长

浙公网安备 33010602011771号