20062516 发表于 2014-6-12 09:29:19

求助:lpc1114中断嵌套问题

中断嵌套的问题:
       我设置外部中断接收上位机数据,要求必须实时性。设置中断优先级别最高。又设置一个定时器中断,优先级别较外部中断级别低,程序中定时器中断里面做的工作有点多,大概要700多个微秒。理论上在这个700多个微秒过程中如果有外部中断触发,应该会触发中断嵌套,去处理外部中断,完成后再继续做完这700个微秒的工作。但在实际测试过程中不是这样的,外部中断无法打断定时器中断,导致的结果就是外部中断丢失了一些。
      中断优先级设置代码如下:
               NVIC_SetPriority(TIMER_32_1_IRQn, 1);//定时器优先级别1
        NVIC_SetPriority(EINT3_IRQn, 0);//外部中断优先级别0

图中的最上一部分是外部中断数据,最下一部分是定时器中断,可以清楚的看出外部中断触发很频繁,但遇到进入定时器中断后,外部中断就没有办法再触发

Eric2013 发表于 2014-6-12 09:50:06

你没有设置优先级分组,系统初始默认是在同一个抢占优先级分组中,你将两个中断设置在不同的抢占优先级分组下即可。

20062516 发表于 2014-6-16 23:07:43

Eric2013 发表于 2014-6-12 09:50
你没有设置优先级分组,系统初始默认是在同一个抢占优先级分组中,你将两个中断设置在不同的抢占优先级分组 ...

你好,我没看到有优先级分组的函数呢,能告诉我是那个函数,或者哪个寄存器的那个位吗,网上的资料很少的。以前用stm32习惯了,总是想在函数库里调用成型的函数

Eric2013 发表于 2014-6-17 08:46:51

20062516 发表于 2014-6-16 23:07
你好,我没看到有优先级分组的函数呢,能告诉我是那个函数,或者哪个寄存器的那个位吗,网上的资料很少的 ...

你能在你的工程里面找到你使用的这个函数不:NVIC_SetPriority,能找到这个函数就能找那个设置分组的函数

20062516 发表于 2014-6-17 10:54:15

Eric2013 发表于 2014-6-17 08:46
你能在你的工程里面找到你使用的这个函数不:NVIC_SetPriority,能找到这个函数就能找那个设置分组的函数 ...

我用的这个库没有,nxp库做的不太好,感觉还是st的用着舒服一些。先谢谢你了哥们,找到思路就好了,我自己再去想点办法找找看

Eric_Xue 发表于 2015-10-30 19:38:54

请问LZ的问题解决没?除了NMI/HardFault,LPC1114是否支持抢占(preempt)?
从LPC1114的AIRCR寄存器中并没有看到PRIGROUP的设置,也就是说LPC1114的优先级没有分组的概念了。
那么LPC1114是优先级0-3是否支持抢占,比如优先级0的异常(或中断)可以抢占优先级3的异常(或中断)?
还是只有NMI/HardFault才有可能抢占优先级0-3?

Eric_Xue 发表于 2015-10-30 19:50:08

Eric2013 发表于 2014-6-17 08:46
你能在你的工程里面找到你使用的这个函数不:NVIC_SetPriority,能找到这个函数就能找那个设置分组的函数 ...

Eric2013,您好,我也有同样的疑问。我在LPC1114的规格书中没有看到有PRIGROUP的设置。这是否意味着LPC1114不支持0-3的优先级抢占?
   按LZ遇到的情况就是,EINT3_IRQn的优先级设置0,TIMER_32_1_IRQn的优先级设置为1。即使在TIMER_32中断中发生了EINT3_IRQn,EINT3_IRQn也无法抢占(preempt)TIMER_32。必须要等TIMER_32执行完毕才能执行。
也就是说永远无法实现EINT3_IRQn和TIMER_32的中断嵌套?

Eric2013 发表于 2015-10-31 16:26:34

Eric_Xue 发表于 2015-10-30 19:50
Eric2013,您好,我也有同样的疑问。我在LPC1114的规格书中没有看到有PRIGROUP的设置。这是否意味着LPC11 ...

LPC1114是M0内核不,看了下core_cm0.h里面的函数,的确是没有设置优先级分组的函数

不过可以看下Cortex-M0权威指南里面对M0中断优先级的设定方法。

Eric_Xue 发表于 2015-10-31 16:45:35

Eric2013 发表于 2015-10-31 16:26
LPC1114是M0内核不,看了下core_cm0.h里面的函数,的确是没有设置优先级分组的函数

不过可以看下Cortex- ...

LPC1114是Cortex-M0内核的。
页: [1]
查看完整版本: 求助:lpc1114中断嵌套问题