LPC 1758 cortex-m3 中断嵌套问题

时间:2022-10-06 04:15:05
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); 

这样设置不行   高手指点下 谢谢

5 个解决方案

#1


哎哟  没人会吗???

#2


同学是不是拼写错了?

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);

#3


优先级是高位到低位的,它的有效位数如果不超过4位,你的优先级其实是相等的.

#4


你两个都设的 I2C2_IRQn ,
到底谁嵌套进谁呢?

一般来说,只要优先级设定好,低优先级的中断操作时,高优先级可嵌套进入,这个问题的。

优先级掌握如下的规律即可:
1. 优先级组的数值越小,中断越优先(优先级别越高)
2. 相同优先级组的数值时,中断号越小,中断越有限(优先级别越高)

#5


该回复于2012-07-17 08:21:44被版主删除

#1


哎哟  没人会吗???

#2


同学是不是拼写错了?

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);

#3


优先级是高位到低位的,它的有效位数如果不超过4位,你的优先级其实是相等的.

#4


你两个都设的 I2C2_IRQn ,
到底谁嵌套进谁呢?

一般来说,只要优先级设定好,低优先级的中断操作时,高优先级可嵌套进入,这个问题的。

优先级掌握如下的规律即可:
1. 优先级组的数值越小,中断越优先(优先级别越高)
2. 相同优先级组的数值时,中断号越小,中断越有限(优先级别越高)

#5


该回复于2012-07-17 08:21:44被版主删除