Cortex-M3滴答定时器优先级设置

首先声明一点,滴答定时器优先级是可以设置的同样受NVIC控制。

设置代码如下:

//系统中断管理

void NVIC_Configuration(void)

{

        NVIC_InitTypeDefNVIC_InitStructure;
       /* Configure the NVIC Preemption PriorityBits */ 

       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   //设置中断优先级分组



       NVIC_InitStructure.NVIC_IRQChannel =TIM2_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 2;

      NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0; 

      NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;

      NVIC_Init(&NVIC_InitStructure);

     NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),3, 3));     //抢占优先级为3

}

其实systick中断优先级的设置,只有一行代码,NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),3, 3)); //抢占优先级为3

这行代码做了两件事情,一是先获取中断优先级分组,二是设置systick的中断抢占优先级为3,亚优先级为3.

滴答定时器中断与其它中断不同的是,滴答定时器中断可以抢占,与自己抢占优先级相同的中断(与亚优先级无关),不能抢占,比自己抢占优先级高的中断,该结论由本人试验得出,暂时未在芯片手册上找到理论依据,还请感兴趣的网友也帮忙验证一下。

(由于本人水平有限,文中难免有错误或不妥之处,敬请读者批评指正!转载请注明出处!)

  联系方式:435835181@qq.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值