【原创】TI C2833x介绍---复位与中断(12)
0赞
发表于 2012/7/7 15:50:26
阅读(2050)
因为PIEIERx寄存器决定了程序会跳转到哪个向量,所以在清除PIEIERx里面的位时必须仔细确认操作按照前面两次提到的步骤来,否则在中断求取已经送入CPU之后再修改PIEIERx寄存器时,若没有其余的中断请求被使能,将导致进入TRAP中断,否则将进入那个被使能并等待响应的中断。所以有时候在程序中对寄存器的配置不正确时,我们可能会发现,本来应该进ISR1时却进入了ISR2这样的情况。
另外补充一点前面遗漏的东西(因为不怎么好归类,所以放在最后):
1. PIE中断向量表是一块256 x 16的SARAM模块,如果我们不使用PIE的话,可以把这块RAM做为数据存储空间使用。当然,一般情况下我们的资源不会紧张到如此地步;其次,为了程序兼容性的考虑,不用的话就把它作为RAM的一个保留地址也好,除非变量多的实在没有内部RAM空间存放了。
2. 在上电复位时,PIE中断向量表是没有任何内容的,所以在程序初始化时需要对它们进行修改。那么多向量的赋值貌似很麻烦,不过TI的库里面已经帮我们做好了,在DSP2833x_PieVect.c里面,要记得把它加到自己的工程里。
3. 在PIE使能之后,会有TRAP #1取INT1.1向量,TRAP #2取INT1.2向量……这样的一个操作(所以在开头提到的情况发生时会跳转到对应的TRAP中断)。
4. 目前PIE向量表中只有96个定义的中断,其余的被保留给后续器件升级用。只要在PIEIFR中正确使能,这些保留的中断可以做为一个“软件”中断。