首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-11-19 
LPC 1758 cortex-m3 中断嵌套问题NVIC_EnableIRQ(IRQn_Type IRQn);NVIC_GetPriorityGrouping(void)NVIC_Se

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. 相同优先级组的数值时,中断号越小,中断越有限(优先级别越高)

热点排行