欢迎来到天天文库
浏览记录
ID:40658432
大小:208.00 KB
页数:7页
时间:2019-08-05
《05-中断编程-yy》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、五、中断编程ARMCoetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。对于STM32F10xxx产品(小容量、中容量和大容量)产品,支持76个中断(16个内部+60个外部),互联型产品支持的中断共84个(16个内部+68个外部)。有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。4bit的中断优先级可以分成2组,从高位看,前面定义的是抢占式优先级,后面是响应优先级。按照这种分组,4bit一共可以分成5组第0组:所有4bit用于指定响应优先级;第1组:最高1位用于指定抢占式优先级,后面3位
2、用于指定响应优先级;第2组:最高2位用于指定抢占式优先级,后面2位用于指定响应优先级;第3组:最高3位用于指定抢占式优先级,后面1位用于指定响应优先级;第4组:所有4位用于指定抢占式优先级。所谓抢占式优先级和响应优先级,他们之间的关系是:具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优
3、先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。每一个中断源都必须定义2个优先级。在sys.c文件中定义了几个关于中断的函数:voidMY_NVIC_Init(u8NVIC_PreemptionPriority,u8NVIC_SubPriority,u8NVIC_Channel,u8NVIC_Group);//设置中断其中,NVIC_Channel参数定义在stm32f10x_nvic.h文件中。中断函数入口名(Handle)定义在startup_stm32f10x_md.s文件中。在《Cortex-M3权威指南》中,“7.2优先级的定义”中说明了
4、抢占优先级和子优先级概念:NVIC中有一个寄存器是“应用程序中断及复位控制寄存器”(AIRCR,地址0xE000_ED00),它里面有一个位段名为“优先级组”。该位段的值对每一个优先级配置为2个位段:MSB所在的位段(左边的)对应抢占优先级,而LSB所在的位段(右边的)对应子优先级。AIRCR如下图。NVIC的访问地址是0xE000_E000.NVIC下的寄存器包括:l使能和除能寄存器SETENAs:0xE000_E100–0xE000_E11C;CLRENAs:0xE000E180-0xE000_E19Cl悬起与解悬寄存器SETPENDs:0xE000_E200–0xE
5、000_E21C;CLRPENDs:0xE000E280-0xE000_E29Cl活动状态寄存器0xE000_E300_0xE000_E31Cl优先级寄存器0xE000_E400–0xE000_E4EF在stm32f10x_map.h中,有定义如下nvic相关内容:typedefstruct{vu32ISER[2];u32RESERVED0[30];vu32ICER[2];u32RSERVED1[30];vu32ISPR[2];u32RESERVED2[30];vu32ICPR[2];u32RESERVED3[30];vu32IABR[2];u32RESERVED4[62
6、];vu32IPR[15];}NVIC_TypeDef;//与NVIC的访问地址对应/*SystemControlSpacememorymap*/#defineSCS_BASE((u32)0xE000E000)#defineSysTick_BASE(SCS_BASE+0x0010)#defineNVIC_BASE(SCS_BASE+0x0100)#defineSCB_BASE(SCS_BASE+0x0D00)#ifdef_NVIC//定义在stm32f10x_conf.h文件中,在stm32f10x_map.h包含#defineNVIC((NVIC_TypeDef*)NV
7、IC_BASE)#defineSCB((SCB_TypeDef*)SCB_BASE)#endif/*_NVIC*/typedefstruct{vuc32CPUID;vu32ICSR;//中断控制及状态寄存器vu32VTOR;//向量表偏移量寄存器vu32AIRCR;//应用程序中断及复位控制寄存器vu32SCR;vu32CCR;vu32SHPR[3];vu32SHCSR;vu32CFSR;vu32HFSR;vu32DFSR;vu32MMFAR;vu32BFAR;vu32AFSR;}SCB_TypeDef;ISER[2]:ISE
此文档下载收益归作者所有