【分布式温湿度采集系统】+STM32H7-IAR环境在线仿真RAM运行
[复制链接]
调试平台STM32H745XI-DISCO,软件IAR9.10.2
1> ICF文件中定义中断空间矢量表起始地址
define symbol __ICFEDIT_intvec_start__ = 0x24000000;
2> ICF文件中定义代码区的起始和结束地址
define symbol __ICFEDIT_region_ROM_start__ = 0x24000000;
define symbol __ICFEDIT_region_ROM_end__ = 0x2403FFFF;
3>在IAR的Workspace->Project->Option->Debugger->Download,去点Use falsh loader的勾选
到此感觉已经可以了,编译试了一下,刚开始运行还行,一旦发生中断,程序就飞了,这是怎么回事呢
虽然我们把程序编译到了中断空间矢量表起始地址,但是CPU运行起来,它是有个默认的地址的0x0800 0000,
这就需要我们初始化的时候,更改一下这个寄存器,SCB->VTOR。
4>在IAR的Workspace->Project->Option->C/C++ Compiler的Preprocessor下Defined symbols中,
添加USER_VECT_TAB_ADDRESS、VECT_TAB_SRAM。
这个就起始就是把SCB->VTOR更改为0x24000000。
程序在运行到main函数是需要有一部分初始化代码的,一些关键配置,包括stack、需要初始化赋值的变量等
|