STM32 ARM 嵌入式 NVIC_SetPriority (IRQn_Type IRQn, uint32_t priority)是怎么完成优先级设置的? 50

NVIC_SetPriority(SysTick_IRQn,(1<<__NVIC_PRIO_BITS)-1);这个函数是怎么完成优先级设置的?关于SHP[11]是怎么完成... NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
这个函数是怎么完成优先级设置的?
关于SHP[11]是怎么完成优先级设置的?
SysTick_IRQn=-1;
__NVIC_PRIO_BITS=4;

***************************************************************************************************************
static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
if(IRQn < 0) {
SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */
else {
NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for device specific Interrupts */
}
**************************************************************************************************************
展开
 我来答
繁华落尽搁浅
2014-08-21 · 超过73用户采纳过TA的回答
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:92.8万
展开全部

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);               

 NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;   //通道

 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//优先级设置0 或者1

 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   //优先级设置

 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

 NVIC_Init(&NVIC_InitStructure); 

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

NVIC_PriorityGroup_0:则只看NVIC_IRQChannelSubPriority 的值

NVIC_PriorityGroup_1:

NVIC_PriorityGroup_2:

NVIC_PriorityGroup_3:

NVIC_PriorityGroup_4:则只看NVIC_IRQChannelPreemptionPriority 的值

沉西小0K
2014-08-22 · TA获得超过231个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:188万
展开全部
正如你所见,systick计时器是Cortex-M3的内核外设,它的中断号小于0,所以它的优先级寄存器在SHP。其他的外部外设的中断号大于等于0,所以它的优先级寄存器在IP
更多追问追答
追问
NVIC_SetPriority(SysTick_IRQn, 4); 

SysTick设置优先级时,为什么不用设置优先级分组?
追答
因为它有默认的分组方式。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式