ZHCU083I January 2013 – October 2021 TMS320F2802-Q1 , TMS320F28026-Q1 , TMS320F28026F , TMS320F28027-Q1 , TMS320F28027F , TMS320F28027F-Q1 , TMS320F28052-Q1 , TMS320F28052F , TMS320F28052F-Q1 , TMS320F28052M , TMS320F28052M-Q1 , TMS320F28054-Q1 , TMS320F28054F , TMS320F28054F-Q1 , TMS320F28054M , TMS320F28054M-Q1 , TMS320F2806-Q1 , TMS320F28062-Q1 , TMS320F28062F , TMS320F28062F-Q1 , TMS320F28068F , TMS320F28068M , TMS320F28069-Q1 , TMS320F28069F , TMS320F28069F-Q1 , TMS320F28069M , TMS320F28069M-Q1
InstaSPIN 库以固定的频率从单个中断服务程序中执行。该主 ISR 默认由 ADC 转换结束中断触发。此转换首先由 PWM 模块以固定速率启动。一旦在 ISR 中(本例中为 mainISR())执行,则需要一系列函数调用从 ADC 中获取数据并调用 ROM 中的函数。以下代码为相关示例:
interrupt void mainISR(void)
{
// acknowledge the ADC interrupt
HAL_acqAdcInt(halHandle,ADC_IntNumber_1);
// convert the ADC data
HAL_readAdcData(halHandle,&gAdcData);
// run the controller
CTRL_run(ctrlHandle,halHandle,&gAdcData,&gPwmData);
// run the driver -- set the pwm compare values
HAL_writePwmData(halHandle,&gPwmData);
// setup the controller
CTRL_setup(ctrlHandle);
return;
} // end of mainISR() function
为了说明 InstaSPIN 的性能,我们会首先考虑顶层方法,包括主 ISR 中的五个函数调用(请参见图 9-5)。