当前位置: 代码迷 >> 单片机 >> LPC 1758 cortex-m3 中断嵌套有关问题
  详细解决方案

LPC 1758 cortex-m3 中断嵌套有关问题

热度:254   发布时间:2016-04-28 15:44:12.0
LPC 1758 cortex-m3 中断嵌套问题
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. 相同优先级组的数值时,中断号越小,中断越有限(优先级别越高)

  相关解决方案