主题中讨论的其他器件:C2000WARE、 TMDSHVMTRINSPIN
您好!
我将"C2000Ware_MotorControl_SDK_2_01_00_00_setup"用于我的项目、在该项目中、我将使用"\ti\c2000Ware_MotorControl_SDK_2_01_00_00\solutions\tmdshsprospvmtrin/is13_fwc_MTPA"文件夹作为参考。
我创建了"TIMER0 ISR"、已经可用的"main ISR"函数已被 ADC-C1中断中断中断。
当我根据我的要求对"HAL_setupADC (HAL_Handle handle)"函数进行更改时、 不会生成"main ISR"中断、但会生成"TIMER0 ISR"。
但是、当我在 "HAL_setupADC (HAL_Handle handle)"中不做任何更改时 、我能够生成中断"主 ISR 和 TIMER0 ISR"。
如需更多信息、请参阅下面的 PFD。
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
我的更改代码:[在此中、仅生成 TIMER0 ISR ]。
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
无变化的代码:[生成两个 ISR ]。
void HAL_setupADC (HAL_Handle handle)
{
HAL_Obj * obj =(HAL_Obj *)句柄;
SYSCTL_DELAY (100U);
adc_setVREF (obj->adcHandle[2]、adc_reference_internal、adc_reference_3_3V);
adc_setVREF (obj->adcHandle[1]、adc_reference_internal、adc_reference_3_3V);
adc_setVREF (obj->adcHandle[0]、adc_reference_internal、adc_reference_3_3V);
SYSCTL_DELAY (100U);
//将内部基准配置为1.65*2=3.3
ASysCtl_setAnalogReference1P65 (ASYSCTL_VREFHIA |
ASHSCTL_VREFHIB |
ASHSCTL_VREFHIC);
//启用内部电压基准
ASysCtl_setAnalogReferenceInternal (ASYSCTL_VREFHIA |
ASHSCTL_VREFHIB |
ASHSCTL_VREFHIC);
//设置主时钟缩放因子(ADC 模块的最大时钟为50MHz)
ADC_setPrescaler (obj->adcHandle[0]、ADC_CLK_DIV_2_0);
ADC_setPrescaler (obj->adcHandle[1]、ADC_CLK_DIV_2_0);
ADC_setPrescaler (obj->adcHandle[2]、ADC_CLK_DIV_2_0);
//将 ADC 中断脉冲生成设置为转换结束
ADC_setInterruptPulseMode (obj->adcHandle[0]、ADC_PULSE_END_of _CONV);
ADC_setInterruptPulseMode (obj->adcHandle[1]、ADC_PULSE_END_of _CONV);
ADC_setInterruptPulseMode (obj->adcHandle[2]、ADC_PULSE_END_of _CONV);
//启用 ADC
adc_enableConverter (obj->adcHandle[0]);
adc_enableConverter (obj->adcHandle[1]);
adc_enableConverter (obj->adcHandle[2]);
//设置 SOC 的优先级
ADC_setSOCPriality(obj->adcHandle[0]、ADC_PRI_All_HIPRI);
ADC_setSOCPriality(obj->adcHandle[1]、ADC_PRI_All_HIPRI);
ADC_setSOCPriality(obj->adcHandle[2]、ADC_PRI_All_HIPRI);
//延迟以允许 ADC 加电
SYSCTL_DELAY (1000U);
//配置中断源
//通过分配14将采样窗口配置为15个系统时钟周期
//到 ADCSOCxCTL 寄存器的 ACQPS。
// RC2/C1
adc_setInterruptSource (obj->adcHandle[2]、adc_int_number1、adc_SOC_number2);
//为 hvkit_rev1p1配置 SOC
// IA-FB - B3->RB0
ADC_setupSOC (obj->adcHandle[1]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN3、HAL_ADC_SAMPLE_WINDOW);
// IB-FB - C0->RC0
ADC_setupSOC (obj->adcHandle[2]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN0、HAL_ADC_SAMPLE_WINDOW);
// IC-FB - A3->RA0
ADC_setupSOC (obj->adcHandle[0]、ADC_SOC_NUMBER0、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN3、HAL_ADC_SAMPLE_WINDOW);
// adc -Vhb1 - c2->RC1
ADC_setupSOC (obj->adcHandle[2]、ADC_SOC_number1、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN2、HAL_ADC_SAMPLE_WINDOW);
// adc-Vhb2 - c1->rc2
ADC_setupSOC (obj->adcHandle[2]、ADC_SOC_number2、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN1、HAL_ADC_SAMPLE_WINDOW);
// adC-Vhb3 - B4->RB1
ADC_setupSOC (obj->adcHandle[1]、ADC_SOC_number1、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN4、HAL_ADC_SAMPLE_WINDOW);
// VDCBUS - A9->RA1。 Hvkit 板的 Vbus 反馈上有电容器、因此
//采样不需要很长的时间即可获得准确的值
ADC_setupSOC (obj->adcHandle[0]、ADC_SOC_number1、ADC_TRIGGER_EPWM1_SOCA、
ADC_CH_ADCIN9、HAL_ADC_SAMPLE_WINDOW);
返回;
}// HAL_setupADCs()函数结束
============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
此致、
Karthithkeyan Ramachandran