STM32-中断相关

STM32 为了适应不同的优先级组合,设置了 GROUP 的概念,组是一个大的框架,在组下分别分配了占先优先级与副优先级。每一个中断都有一个专门的寄存器(Interrupt Priority Registers)来描述该中断的占先式优先级及副优先级。在这个寄存器中STM32 使用4个二进制位描述优先级(Cortex-M3 定义了8位,但 STM32只使用了4位)。--转自《稀里糊涂学STM32》第三讲《事出有因》

1.Systick

一般NVIC优先级的设置都是通过NVIC_InitTypeDef中的NVIC_IRQChannelPreemptionPriorityNVIC_IRQChannelSubPriority,但Systick是通过CM3内核的函数NVIC_SetPriority()设置,这是因为Systick的中断号IRQn为-1,这两种设置方式存在如下对应关系

  1. NVIC_SetPriority(SysTick_IRQn, n);  
  2. n=0x00~0x03 设置Systick为抢占优先级0  
  3. n=0x04~0x07 设置Systick为抢占优先级1  
  4. n=0x08~0x0B 设置Systick为抢占优先级2  
  5. n=0x0C~0x0F 设置Systick为抢占优先级3 

具体请参考http://blog.csdn.net/sunjiajiang/article/details/7741715

2.正确设置一个中断,包括peripheral的中断使能,对应NVIC的配置,中断入口函数。同一peripheral的多个中断源往往对应同一个中断处理函数ISR,这时需要在ISR根据中断标志位进行判断。

猜你喜欢

转载自lanxinyuchs.iteye.com/blog/1915751
今日推荐