NVIC_EnableIRQ(IRQn_Type IRQn);
NVIC_GetPriorityGrouping(void)
NVIC_SetPriorityGrouping(uint32_t PriorityGroup)
NVIC_DisableIRQ(IRQn_Type IRQn)
NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
NVIC_GetPriority(IRQn_Type IRQn)
NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)
就这个几个跟中断有关的函数 怎么设置才能是中断嵌套发生了 ????????
以下是我设置的:
NVIC_SetPriority(I2C2_IRQn, 0);
NVIC_EnableIRQ(I2C2_IRQn);
NVIC_SetPriority(I2C2_IRQn, 15);
NVIC_EnableIRQ(EINT0_IRQn);
这样设置不行 高手指点下 谢谢
------解决方案--------------------
同学是不是拼写错了?
1: NVIC_SetPriority(I2C2_IRQn, 0);
2: NVIC_EnableIRQ(I2C2_IRQn);
3: NVIC_SetPriority(I2C2_IRQn, 15);
4: NVIC_EnableIRQ(EINT0_IRQn);
Line3 跟 Line1 相同哦, 我觉得你可能 Line3想写成
NVIC_SetPriority(EINT0_IRQn, 15);
------解决方案--------------------
优先级是高位到低位的,它的有效位数如果不超过4位,你的优先级其实是相等的.
------解决方案--------------------
你两个都设的 I2C2_IRQn ,
到底谁嵌套进谁呢?
一般来说,只要优先级设定好,低优先级的中断操作时,高优先级可嵌套进入,这个问题的。
优先级掌握如下的规律即可:
1. 优先级组的数值越小,中断越优先(优先级别越高)
2. 相同优先级组的数值时,中断号越小,中断越有限(优先级别越高)