小弟刚接触STM32不久。
用的是官方的固件库,采用SRAM启动方式来调试程序,目前下载和运行一般的代码,都没有问题。
问题是,一旦发生中断时,程序就会跑飞到0XFFFFFFFE上去。
具体情况时这样的:
我将编译的"选择菜单"里,Target项中, IROM1 设定为0x20000000 大小0x8000 , IRAM 设定为 0x20008000 大小 8000
然后DEBUG 的 FLASH DOWNLOAD 选项中,也设定了RAM 为0x20008000 ,大小0x8000 , FALSH定位到0x20000000 大小0x8000
同时,板子上也选择为SRAM启动 "BOOT 0 和 BOOT1设置为 SRAM“。
这样设置完后,我可以通过JLINK调试一些简单的程序了。
后来我在程序上增加了一个SYSTICK的中断处理,就是配置好了SYSTICK后,开启了SYSTICK的中断。
结果程序每次在要进入中断的时候,就跑飞了。
百撕不得骑姐,就试着回复到FLASH调试程序。 程序本省一点都没有改,这时,程序就完全正确了,能进入到SYSTICK中断。
我看了startup_stm32f2xx.s , 里面应该都是正确的。
请各位大侠分析下原因,是不是当程序在SRAM中时,需要把中断向量表复制回FLASH??还是说在SRAM调试模式下,需要重定位中断向量表?(按理说是编译器根据startup.s自己映射好了的啊)
我还是希望能在SRAM调试程序。
此帖出自
小平头技术问答
一周热门 更多>