02_stm32f10x中断优先级

stm32f10x中断优先级

1、中断优先级分组

中断优先级分组使用函数 NVIC_PriorityGroupConfig,在该函数的注释部分已经说明了分组的参数

/**
  * @brief  Configures the priority grouping: pre-emption priority and subpriority.
  * @param  NVIC_PriorityGroup: specifies the priority grouping bits length. 
  *   This parameter can be one of the following values:
  *     @arg NVIC_PriorityGroup_0: 0 bits for pre-emption priority
  *                                4 bits for subpriority
  *     @arg NVIC_PriorityGroup_1: 1 bits for pre-emption priority
  *                                3 bits for subpriority
  *     @arg NVIC_PriorityGroup_2: 2 bits for pre-emption priority
  *                                2 bits for subpriority
  *     @arg NVIC_PriorityGroup_3: 3 bits for pre-emption priority
  *                                1 bits for subpriority
  *     @arg NVIC_PriorityGroup_4: 4 bits for pre-emption priority
  *                                0 bits for subpriority
  * @retval None
  */
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
{
  /* Check the parameters */
  assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));

  /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
  SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;
}

举例:如果设置为 NVIC_PriorityGroup_1 表明1个bit位用来表示抢占优先级,3个bit位用来表示次优先级,即抢占优先级只能是0或1,只能进行1级中断嵌套, 次优先级可以是 0~8中的任意数。

在一个工程中只能对中断优先级组设置一次,一般在初始化调用NVIC_PriorityGroupConfig。

2、举例说明中断优先级的设置

设定中断优先级调用函数 NVIC_Init 对中断进行设置

NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;    
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//设定抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设定次优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

3、抢占优先级和次优先级

a、只有具备不同抢占式优先级的中断源可以产生嵌套中断,低优先级中断执行过程可以被高优先级中断打断。优先级的值越小,优先级越高

b、相同的抢占式优先级中断同时发生优先响应次优先级等级较高的中断。

c、抢占式优先级和非抢占式优先级均相同的中断源同时发生时,优先响应中断顺序号较低的中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值