
1) 在处理器处于响应异常事件期间运行的异常事件服务程序,这部分程序称为Handler程序代码,也可以理解为中断服务函数中执行的代码。特点是突发的、与处理器硬件中设计的异常事件管理模块相关,可以认为是异步的。
2) 在处理器处于无异常事件响应期间运行的程序,这部分程序称为Thread程序代码。特点是按照软件设计流程执行、与处理器硬件中设计的异常模块无关,可以认为是同步的。
从地址0x0000_0000处取出MSP的初始值;从地址0x0000_0004处取出PC的初始值,然后从这个值对应的地址处取指。事实上,地址0x00000004开始存放的就是默认中断向量表
ARM Cortex-M内核的中断向量表布局情况如下图所示:
注意:中断向量表的位置可以改变,此处是默认情况下的设置。
在ARM Cortex-M内核中,发生异常后,并不是去执行中断向量表中对应位置处的代码,而是将对应位置处的数据存入PC中,然后去此地址处进行取指。简而言之,在ARM Cortex-M的中断向量表中不应该放置跳转指令,而是该放置ISR程序的入口地址。另外还有两个细节问题需要注意:
0x00000000处存放的MSP初始值最低三位需要是0;
0x00000004处存放的地址最低位必须是1。
如果以前能用,现在不能用了,检查JTAG连接有没有问题。如果JTAG以前能用,在这个板子上不能用,检查电路板设计和上电等有么有错误。
如果电路板以前能用,用这个JTAG不成,检查驱动程序有没有问题,检查JTAG设置有没有问题。
如果电路板和JTAG都是新的,上面的都要检查。但最好先找个能用的一点一点的替换来看,比较容易快速找到问题。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)