This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069M:ADC 中断

Guru**** 2253380 points
Other Parts Discussed in Thread: C2000WARE, MOTORWARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/738283/tms320f28069m-adc-interrupts

器件型号:TMS320F28069M
主题中讨论的其他器件:C2000WAREMOTORWARE

您好!

在尝试将基于 C2000Ware/driverlib 编写的应用程序与基于 Motorware/HAL 的 Lab05d 进行合并时、我一直在调试获取非法 ISR 的问题。 在整个过程中、我的头被捆绑在节点调试中、我被卡住的地方之一是使用 PieVector 表、因为 HAL 保持它自己的矢量表、C2000ware 有它自己的矢量表。

调试和研究:


















void HAL_enableAdcInts (HAL_Handle handle){HAL_Obj * obj =(HAL_Obj *) handle;//启用与 ADC 中断关联的 PI_enableAdcInts (obj->压 Handle、ADC_IntNumber_1);//启用 ADC 中断 ADC_enableInt (obj->adableAdcIntle_interrupts);
//启用 ADC_Int 1 interrupts、ADC_Int、ADC_Int、ADC_Int、intrint 函数1、ADC_Int、ine_interrupt (obj_enable_intle_intle_intt)
PIE_Obj * PIE =(PIE_Obj *)压电式;
uint16_t 索引;
uint16_t setValue;


if (intNumber < ADC_IntNumber_9)
{
索引= 9;
SetValue = 1 << intNumber;
}
否则、如果(intNumber = ADC_IntNumber_9)
{
索引= 0;
SetValue = 1 << 5;
}
其他
{
索引= 0;
SetValue = 1<<(intNumber & 0x07)-1);
}

//设置值
PIe->PIEIER _PIEIFR[index].IER |= setValue;

return;
}// PIE_enableAdcInt()函数

typedef 枚举结束
{
ADC_IntNumber_1_0、 //!<表示 ADCINT1
ADC_IntNumber_2、 //!<表示 ADCINT2
ADC_IntNumber_3、 //!<表示 ADCINT3
ADC_IntNumber_4、 //!<表示 ADCINT4
ADC_IntNumber_5、 //!<表示 ADCINT5
ADC_IntNumber_6、 //!<表示 ADCINT6
ADC_IntNumber_7、 //!<表示 ADCINT7
ADC_IntNumber_8、 //!<表示 ADCINT8
ADC_IntNumber_9、 //!<表示 ADCINT9
ADC_IntNumber_1HP、 //!<表示 ADCINT1与 PIE_enableAdcInt ()一起使用的高优先级仅
为 ADC_IntNumber_2HP、 //!<表示 ADCINT2高优先级、仅与 PIE_enableAdcInt()搭配使用
ADC_IntNumber_9HP=0xE //!<表示 ADCINT9高优先级仅与 PIE_enableAdcInt()一起使用
} ADC_IntNumber_e;

在给定上下文中、索引= 9且 setValue = 1、
以下内容:

PIe->PIEIER _PIEIFR[index].IER |= setValue;

变为

PIE->PIEIER-PIEIFR[9].IER |= 1;


根据 spruh18g、1.7.4 PIE 配置寄存器:

PIEIER9 0x0000 - 0CF2 1 PIE、INT9组启用寄存器

但是、根据表1-120。 PIE 矢量表:

PIE 组9矢量-多路复用为 CPU INT9

SCI-x 和 CAN-x 中断。

我无法清楚地看到这是如何工作的。 很可能、我在这里遗漏了一些东西。 是否有人可以澄清?

谢谢、

制造商

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在此处回复我自己的帖子:

    发现数据表使用以1开头的索引、而 Motorware/HAL 使用以0开头的索引。
    很抱歉听到噪音。

    谢谢、
    制造商
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    马努
    感谢您将调查结果发布回论坛。 请勿主动联系、我们的一个团队将乐意提供帮助。

    最棒的
    Matthew