硬件平台:STM32F411RET6
软件环境:IAR IDE for arm 8.30.1
问题现象:在使用串口+DMA发送数据时,调用发数函数之后,程序卡死,程序跑飞到0x8004e30。
问题解决:
1、定位到只要启动DMA程序就出现异常
2、因为icf文件设置的程序起始flash地址为0x8008000,但跑飞地址为0x8004e30
3、正常情况跑飞地址范围也是从0x8008000开始,查看map文件发现.s向量表地址是从0x8008000开始
4、其实正真的向量表是由软件配置寄存器SCB->VTOR配置的
5、查看该寄存器值还是默认值0x8000000
6、将该值改成0x8008000后,软件运行正常
|