请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-F28069M 主题中讨论的其他器件:MOTORWARE
尊敬的所有人:
我想将 ADCINT1 (哪个链接到 mainISR()函数)设置为最高优先级 ,因为在我的项目中,我计划根据以下优先级使用3个中断:
ADCINT1为1
TIMER0INT 是第2个
SCIARX 是第3个
我参考了文档"MotorWare 的硬件抽象层(HAL)模块"、该文档针对 MotorWare v18进行了更新、并进行了以下设置:
/*在 hal.c 文件中*/ void HAL_enableAdcInts (HAL_Handle handle) { HAL_Obj * obj =(HAL_Obj *) handle; #ifdef ADCINT1_Highlate_Priority //启用与 ADC 中断相关的 PIE 中断 PI_enableAdcInt (obj->压 电式、adc_IntNumber_1HP); //启用 ADC 中断 adc_enableInt (obj->adcHandle、adc_IntNumber_1HP); //为 ADC 中断启用 CPU 中断 cpu_enableInt (obj->cpuHandle、cpu_IntNumber_1); #else //启用与 ADC 中断相关的 PIE 中断 PIE_enableAdcInt (obj->压 电式、ADC_IntNumber_1); //启用 ADC 中断 adc_enableInt (obj->adcHandle、adc_IntNumber_1); //为 ADC 中断启用 CPU 中断 cpu_enableInt (obj->cpuHandle、cpu_IntNumber_10); #endif }// HAL_enableAdcInts()函数结束
在文件 hal.h 中的 HAL_initIntVectorTable()函数中,设置中断向量:
#ifdef ADCINT1_COST_RISEPI->ADCINT1_HP =&mainISR; #else PIE->ADCINT1 =&mainISR; #endif
在 HAL_acqAdcInts()函数中:
静态内联 void HAL_acqAdcInts (HAL_Handle handle、const ADC_IntNumber_e intNumber) { HAL_Obj * obj =(HAL_Obj *)句柄; ADC_clearIntFlag (obj->adcHandle、intNumber); #ifdef ADCINT1_Highest 优先级 PI_clearInt (obj->压 电筒、PI_GroupNumber_1); #else PI_clearInt (obj->压 电极、PI_GroupNumber_10); #endif return; }// HAL_acqAdcInts ()函数的末尾
在 mainISR()函数中,我调用了:
中断 void mainISR() {// 确认 ADC 中断 #ifdef ADCINT1_Highers_Priority HAL_acqAdcIntts (halHandle、ADC_IntNumber_1HP); #else HAL_acqAdcIntts (halHandle、ADC_IntNumber_1); #endif //在此中断中执行某些操作 }//完成 mainISR 函数的末尾
----
但上述设置仅在我未定义 ADCINT1_Highest 优先级时运行。 换句话说、当使用 ADCINT1_Highest 优先级设置时、我无法运行 ADCINT1中断。
请帮助我解决此问题、
提前感谢、