gpt4 book ai didi

c - 中断 C 内的断点

转载 作者:行者123 更新时间:2023-12-05 01:16:00 25 4
gpt4 key购买 nike

我正在使用 Texas IntrumentsLCDK C6748Code Composer StudioTMDSEMU100V2U-14T - XDS100v2 USB JTAG 仿真器.

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

我刚刚实现了回调函数,因此每当有新样本来自 ADC 时它就会执行一些操作。

我试图在中断内设置一个断点,但在运行时程序“流”没有到达那里。

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

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) 为什么即使我在 main 中设置断点,中断似乎也不会发生,如果我不这样做,它就会发生。

3) 在运行时,在 CCS 中,我必须通过哪些方式访问变量?

谢谢

最佳答案

  1. 尝试放置断点然后运行。看看它是否至少命中一次。如果是这样,那么你的中断源不会自动清除[因为你没有在 ISR 中明确地这样做]。根据我的经验,在 TI Controller 中,他们希望您清除 ISR 路径以接收下一个。
  2. 如果您甚至没有收到第一次中断,那么请检查为 ISR 生成的程序集和编译器完成的优化。

  3. 尽管您以后可能需要查看时序和全局变量保护,以防发生冲突,但目前以上 2 个建议都可以。

关于c - 中断 C 内的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27910204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com