×
单片机 > 单片机程序设计 > 详情

VIC中断控制

发布时间:2020-05-30 发布时间:
|
ARM7比较难理解和控制的就是中断控制,把自己找的一些资料写上来。

1、 快速中断FIQ

⑴在主程序中:

①     在VICIntSelect中将中断分配为FIQ中断;

②     在VICIntEnable中使能外设中断。

    ⑵中断服务程序中:

①     中断处理;

②     清除相应的中断标志,以响应下一次中断。

2、 向量IRQ

⑴主程序

①     在VICIntSelect中将中断分配为IRQ中断;

②     在VICVectCntlx中分配中断通道(优先级);

③     在VICVectAddrx中设置中断服务程序的地址;

④     通过VICIntEnable使能外设中断。

   ⑵中断服务程序

①     中断处理;

②     清除相应的中断标志,以响应下一次中断;

③     对VICVectAddr寄存器执行写操作(通常为0x00),结束向量中断,以更新硬件优先级。

3、 非向量IRQ

   ⑴主程序

①      在VICDefVectAddr中设置中断服务程序的地址;

②       通过VICIntEnable使能外设中断。

     ⑵中断服务程序

①中断处理;

②清除相应的中断标志,以响应下一次中断;

③对VICVectAddr寄存器执行写操作(通常为0x00),结束向量中断,以更新硬件优先级。

初始化

1,设置IRQ/FIQ中断;

2,若是IRQ中断,则可以设置为向量中断并分配中断优先级,否则为非向量IRQ;

3,然后可以设置中断允许

4,以及向量中断对应地址或非向量中断默认地址

IRQ中断时

1,读取向量地址寄存器,跳转到相应代码

2,退出中断时,对向量地址寄存器写0,通知VIC中断结束

当发生中断时,处理器将会切换处理器模式,同时相关的寄器也将会映射


 

LPC2104的中断管理是由向量中断控制器(VIC)操作的,向量中断控制器具有32个中断请求输入(32个中断通道,但LPC210X只使用了17个通道,即0~16),可将它们设置为FIQ,向量IRQ和非向量IRQ,通过编程不同外设的向量IRQ中断优先级,可实现动态分配调整。非向量IRQ中断优先级最低

相关寄在存器解释如下:

检查中断状态或中断通道

VICIRQStatus:IRQ状态请求标志。置1的位表示对应的通道号中断有效(此通道设置为IRQ,并已使能。只读。

VICFIQStatus:FIQ状态请求标志。同上。

VICRawIntr:所有中断的状态。32个通道的中断请求/软件中断状态(不管是否使能)。只读。

中断通道IRQ或FIQ选择

VICIntSelect:中断选择,即选择IRQ或FIQ中断。置1时表示对应通道设置为FIQ。读/写

中断使能及软件中断

VICIntEnable:中断使能。置1时表示对应通道使能,否则为禁能。读/写。

VICIntEnclr:中断使能清零。置1时清除对应通道使能标志。只写。

VICSoftInt:软件中断设置。置1时表示对应通道产生中断。只能通过VICSoftClear清除软件中断标志。读/写

VICSoftClear:软件中断清零。清除相应通道的软件中断标志。只写。

IRQ中断向量

VICVectAddr:向量中断地址。当发生向量IRQ时,此寄存器是最高优先级IRQ通道的向量地址值。读/写。

IRQ向量原地址

VICDefVectAddr:非向量中断的向量地址。当发生非向量中断时,即将此寄存器值复制到VICVectAddr中。读/写

VICVectAddr0~15:优先级0~15向量中断的向量地址。当有对应优先级向量IRQ中断时,将会把保存的值复制到VICVectAddr中。读/写

向量IRQ中断优先级设置

VICVectCntl0~15:向量控制寄存器0~15,即向量优先级寄存器。可以把各个IRQ中断通道分配到不同的向量控制寄存器中,使其成为向量中断,并具有一定的优先级。读/写。

设置向量中断,即是把中断通道分配到向量IRQ中断优先级寄存器中,当然对应通道必须设置为IRQ中断类型,而不能为FIQ中断类型。在VIC中,FIQ无中断优先级,也无向量地址,一般只分配一个通道为FIQ中断。VICVectCntl0~15寄存器的D5位是控制是否使能此优先级的向量功能,若复位为0,则关闭其向量功能,此向量IRQ变为非向量IRQ。

杂项

VICProtection:保护使能,若最低位为1,则只允许在特权模式下访问VIC寄存器。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP432学习笔记:ADC14