搜索
bottom↓
回复: 8

求助:lpc1114中断嵌套问题

[复制链接]

出0入0汤圆

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-6-12 09:50:06 | 显示全部楼层
你没有设置优先级分组,系统初始默认是在同一个抢占优先级分组中,你将两个中断设置在不同的抢占优先级分组下即可。

出0入0汤圆

 楼主| 发表于 2014-6-16 23:07:43 | 显示全部楼层
Eric2013 发表于 2014-6-12 09:50
你没有设置优先级分组,系统初始默认是在同一个抢占优先级分组中,你将两个中断设置在不同的抢占优先级分组 ...

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

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2014-6-17 10:54:15 | 显示全部楼层
Eric2013 发表于 2014-6-17 08:46
你能在你的工程里面找到你使用的这个函数不:NVIC_SetPriority,能找到这个函数就能找那个设置分组的函数 ...

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

出0入0汤圆

发表于 2015-10-30 19:38:54 | 显示全部楼层
请问LZ的问题解决没?除了NMI/HardFault,LPC1114是否支持抢占(preempt)?
从LPC1114的AIRCR寄存器中并没有看到PRIGROUP的设置,也就是说LPC1114的优先级没有分组的概念了。
那么LPC1114是优先级0-3是否支持抢占,比如优先级0的异常(或中断)可以抢占优先级3的异常(或中断)?
还是只有NMI/HardFault才有可能抢占优先级0-3?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 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的中断嵌套?

出0入0汤圆

发表于 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中断优先级的设定方法。

出0入0汤圆

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

不过可以看下Cortex- ...

LPC1114是Cortex-M0内核的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 14:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表