首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中断C内的断点

中断C内的断点
EN

Stack Overflow用户
提问于 2015-01-12 20:27:05
回答 2查看 1.9K关注 0票数 3

我正在使用LCDK C6748 of 德州内部与 Composer 和TMDSEMU100V2U-14T-XDS100v2 USB模拟器。

LCDK附带了一系列支持函数,包括一个初始化板和定义每个中断调用哪些回调函数的函数。

我刚刚实现了回调函数,所以每当有一个新的样本来自ADC时,它就会做一些事情。

我试图在中断中设置一个断点,但在运行时,程序"flow“没有到达。

此外,我还做了一些更简单的事情:

代码语言:javascript
复制
volatile int flag = 0;


interrupt void interrupt4(void) // interrupt service routine
{
   flag = 1;
   return;
}

int main(){
    // board initializing function, defining sampling rate etc.
    L138_initialise_intr(FS_48000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB);

    while(1){
       if (flag == 1){
          printf("interrupt entered");
          flag = 0;
       }
    }
}

但是,出于某种原因,while循环只输入了一次。

这让我感到惊讶,因为如果我不设置断点,中断就会连续输入--我只想把示例传递给扬声器行,而没有做任何其他事情,我听到了音乐。

我有一种感觉,我错过了一些非常基本的关于中断的东西,我对这个话题很陌生。

有谁能给我解释一下,或者把我联系到解释DSP机制是如何工作的好来源?

1)为什么不能在中断内部设置断点?

( 2)为什么即使我主要设置了断点,中断似乎也不会发生,如果没有,则不会发生。

3)在运行时,在CCS中,我必须以何种方式访问变量?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-14 04:15:24

  1. 尝试放置断点,然后运行。看它是否至少击中一次。如果是这样,那么您的中断源就不会被自动清除,因为您没有在ISR中显式地清除中断源。在TI控制器,他们期望您清除ISR路径接收下一步,根据我的经验,。
  2. 如果您甚至没有收到第一次中断,那么,检查为ISR生成的程序集和编译器所做的优化。
  3. 虽然,您可能需要看到的时间和全局变量保护以后,在冲突的情况下,但到目前为止,以上两个建议应该可以。
票数 2
EN

Stack Overflow用户

发布于 2015-01-13 16:32:01

我认为你的中断是一个计时器中断。在许多情况下,当触发断点时,jtag会停止许多MPU/DSP模块,但是计时器继续运行。这会导致计时器溢出,这意味着设置了溢出标志,在重新设置标志之前,将永远不会调用中断。

我不知道是否可以在触发断点时设置jtag来停止计时器。与飞思卡尔MPU,IDE和segger jtag I可以。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27910204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档