主题:SysConfig 中讨论的其他器件
工具/软件:
我使用一键迁移来转换要在 F28379D LaunchPad 上使用的 F28p65 Universal_Servo_Drive 代码。 我的代码编译没有错误、但当我运行调试器时:
程序卡在 motor1_drive.c 中的第 627 行 这是线路
while (ADC_getInterruptStatus (MTR1_ADC_INT_BASE、MTR1_ADC_INT_NUM)== false);因为 getInterruptStatus 函数不会由于操作的值无效而产生布尔值。
步进到 ADC.h 中的函数
ADC_getInterruptStatus (uint32_t base、ADC_IntNumber adcIntNum)
{
//
//检查参数。
//
断言 (ADC_isBaseValid (base));
//
//获得指定的 ADC 中断状态。
//
return ((HWREGH (BASE + ADC_O_INTFLG)&(1U <<(uint16_t) adcIntNum))!= 0U);
}
包含值 ADC_0_INTFLG、点击时显示“无法在索引中找到符号“ADC_O_INTFLG"。“。 在 adc.h 文件中的后续函数(如 ADC_clearInterruptStatus、ADC_getInterruptOverflowStatus、ADC_clearInterruptOverflowStatus)中、找不到类似的宏、例如 ADC_O_INTFLGCLR 和 ADC_O_INTOVF。
为什么找不到这些值? ADC 是在 SysConfig 中设置的方式吗? 或者设备支持文件是否需要手动编辑?
我认为这可能是由 ADC 未触发或 ADC 触发 ISR 未正确设置引起的、所以回到 SysConfig 进行调查。 首先、我确认两个文件之间正确启用了中断并且相似。 F28379D SysConfig 位于左侧、F28P65 SysConfig 位于右侧。
ADCA:

ADCB:

挑战

这些似乎配置正确。
然后、我检查了两块电路板的 SOC 配置。 根据我对 本转换文档的理解 (F28p65 采用 ADCIN7)、F28379D 应改用 ADCIN2。 这是正确的吗? 在 universal_servo_drive 中、SOC 通道设置为“单端、ADCIN7“。
但是、这仍然没有意义。 即使上述情况不正确、错误通道也不会导致不会触发中断。
可能会出现什么问题、我应该继续查看哪些方面?
请参阅此处随附的工程: e2e.ti.com/.../1460.universal_5F00_servo_5F00_drive_5F00_f28p65x_5F00_convertedto_5F00_f28379D.zip
