NVIC_SetPriority(SysTick_IRQn, 0x08);

2019-12-20 21:39发布

/* Set SysTick interrupt vector Preemption Priority to 1 */
  NVIC_SetPriority(SysTick_IRQn, 0x08);
大家能帮我看一看为什么  NVIC_SetPriority(SysTick_IRQn, 0x08);
这样设置抢占优先级就设置为了1
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
wohelaopo
1楼-- · 2019-12-20 22:24
恩  今天自己做了下试验
NVIC_SetPriority(SysTick_IRQn, n);
n=0x00~0x03  设置Systick为抢占优先级0
n=0x04~0x07  设置Systick为抢占优先级1
n=0x08~0x0B  设置Systick为抢占优先级2
n=0x0C~0x0F  设置Systick为抢占优先级3
比如n的值任意填入0x00 还是 0x03  它的抢占优先级均为0  而且没有对子优先级起作用
不知道大家遇到过这样的问题没有  也希望能帮到遇到同样问题的初学者
shenghui577
2楼-- · 2019-12-21 03:48
回复【1楼】wohelaopo  
-----------------------------------------------------------------------

NVIC_SetPriority函数指定中断优先级的寄存器位(STM32只用4位来表示优先级)的数据,根据你实验的结果可以看出你的中断优先级组设置为了2,即高2位用于指定抢占式优先级,低2位用于指定响应优先级,0x00~0x03高2位为0,所以抢占优先级为0;0x04~0x07高2位为1,所以抢占优先级为1,以此类推。
peixiuhui
3楼-- · 2019-12-21 07:35
 精彩回答 2  元偷偷看……
bossmaster_chan
4楼-- · 2019-12-21 11:41
感謝樓友分享!

一周热门 更多>