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.
工具/软件:Code Composer Studio
尊敬的所有人:
我很难理解"SD24中断"的完整过程。 那么、这是我一直使用的以下代码:
#include "driverlib.h" uint16_t results[320]; // SD24转换和温度结果 //结果[0]=原始 SD24结果 //结果[1]=以 K 为单位的温度 //结果[2]= C 中的温度 // results[3]= F uint8_t Flag_1中的 temp = 0; 针对 ADC uint8_t Flag_2 = 0的//Flag 1; //数据就绪标志2 uint16_t start_timer_counter; uint16_t stop_timer_counter; uint16_t ticks timer_counter; uint16_t result0_adc; uint16_t square_adc; uint16_t sum_square_adc; void main (void) { uint16_t i = 0; //停止 WDT WDT_HOLD (WDT_BASE); //内部参考 SD24_init (SD24_BASE、SD24_REF_INTERNAL); //Ch0单模式内部温度传感器 SD24_initConvertterAdvancedParam param ={0}; param.converter = SD24_converter_0; param.conversionMode = SD24_Continuous_mode; param.groupEnable = SD24_not _grouped; param.inputChannel = SD24_INPUT_CH_ANALOG; param.dataFormat = SD24_data_format_binary; param.interruptDelay = SD24_Four_SAMPLE_INTERRUPT; param.oversample.Ratio = SD24_oversample_256; param.gain = SD24_gain_16; SD24_initConverterAdvanced (SD24_BASE、¶m); SD24_enableInterrupt (SD24_BASE、SD24_converter_0、SD24_converter_interrupt); //对于1.2V 基准电压稳定、延迟~200us _delay_cycles (3200); //开始转换 SD24_startConverterConversion (SD24_BASE、SD24_converter_0); while (1) { _bis_SR_register (LPM0_bits | GIE); __no_operation(); 如果(Flag_1 = 1) { flag_1 = 0; } }//------------------ //中断函数 ///------------------------------------------------------- //ADC #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__) #pragma vector=SD24_vector __interrupt void SD24_ISR (void){ #elif defined (__GNU__) void __attribute__((interrupt (SD24_vector)))) SD24_ISR (void))不支持! #endif 开关(__evo_in_range (SD24IV、SD24IV_SD24MEM3)) { 案例 SD24IV_NONE:break; 案例 SD24IV_SD24OVIFG:中断; 案例 SD24IV_SD24MEM0: //保存 CH0结果(清除 IFG) result0_adc = SD24_getHighWordResults (SD24_BASE、SD24_converter_0); results[i]= result0_adc; i=i+1; 如果(i>319) { I = 0; flag_1 = 1; } __no_operation();//断点 中断; 案例 SD24IV_SD24MEM1:中断; 案例 SD24IV_SD24MEM2:中断; 案例 SD24IV_SD24MEM3:中断; 默认值:break; } _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS); //从 LPM0唤醒 } 我认为正在发生的情况是:SD24在进入 while 循环之前开始转换、一旦数据就绪、就会产生中断、SD24开始下一次转换。 在下一次转换开始时、会执行中断例程;即将 ADC 值存储到数组中、检查 i>319、最后提高/唤醒 CPU。 2. CPU 被唤醒后、它会检查标志并返回到 LPM0。 如果我错了、请纠正我的错误、并在上面显示更多信息。 此 致 、Neal