该文档指出 M3 NVIC 可以处理来自模拟子系统的中断。
SPRUH22F 第11.3.7节: ADC 包含八个中断,可以标记和/或传递给 PIE 和 NVIC。
ADC 中断确实是在 Mware\inc\hw_ints.h 中定义的
在 C28上、我根据需要配置 ADCINT2:
Adc2Regs.INTSEL1N2.bit.INT2E = 1;//启用 ADCINT2
Adc2Regs.INTSEL1N2.bit.INT2CONT=1;//启用 ADCINT2连续模式,也尝试非连续模式
Adc2Regs.INTSEL1N2.bit.INT2SEL = 0xEINT2;//触发 ADCINM3设置
在 M3上、我对 NVIC 使用 driverlib:
//设置 ADC EOC14中断的中断:
IntEnable (INT_ADC2);
IntRegister (INT_ADC2、ADCHandler);
//启用处理器中断。
IntMasterEnable();
其中 ADCHandler 是我定义的回调。
我不清楚如何从 M3侧确认中断。 我应该使用 IntPendClear (INT_ADC2)吗?
由于 C28 PIE 不处理中断、因此我似乎不必确认 C28上的中断。 但我会吗? 我是否需要对 PIE 执行其他操作?
当我将上述代码与 ADCHandler 中调用的 IntPendClear (INT_ADC2)一起使用时、内核实际上不会在调试器中运行、而是会不断复位它们。
之前我有一个工作示例、其中 ADC 中断1在 C28侧执行。 但是、我成功地获得了要在 M3侧执行的 ADC 中断。
Ricky 在这个主题上的最后一篇文章: https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/138792?Concerto-M3-can-use-adc- 说我要尝试的应该是可能的。
谢谢。 -Erik