大家好、
客户设置一个 ADC 中断函数、将数据从 MEM0导入到其自己设置的数组中。 在收集数据样本后、ADC 直接在中断功能中关闭(ADC12ON ADC12ENC ADC12SC 直接设置为零)、并根据调试结果、客户设置 index=2作为关闭 ADC 的条件:

在检查所有步骤、index=2并执行 Close ADC 语句并结束中断函数运行后、中断函数会再次运行、并且根据语句索引为+1; 运行完成后、单片被停留在中断功能的末尾、不能跳出并且不能执行 CCS 接口上的暂停按钮。

此时、index=2、并执行 if 内容。
此时、索引=3不是使用 index++指令执行的:

此时、索引= 4、上面运行的三角形按钮会自动转换为暂停键按钮、程序不能暂停:

以下是主函数和中断函数代码:
void main (void)
{
WDTCTL = WDTPW+WDTHOLD;//停止看门狗计时器
P6SEL |= 0x01;//启用 A/D 通道 A0
ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC;//打开 ADC12、设置采样时间
//设置多个采样转换
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2+ADC12SSEL_0;//使用采样计时器、设置模式
ADC12IE = 0x01;//启用 ADC12IFG.0
ADC12CTL0 |= ADC12ENC;//启用转换
ADC12CTL0 |= ADC12SC;//开始转换
_bis_SR_register (LPM4_bits + GIE);//输入 LPM4、启用中断
//用于调试器
while (1)
{
if (index==3)
{
f = 1;
索引= 0;
对于(Q4=0;q4 <num_point;q4++)
{
CHAN_DATA=Results[Q4];
///san_data -=0x7FF;
CHAN_DATA *= 1.5;
Result Q4]=((float) Chan_data/4095);
}
FFT (结果、TAB_dfti);
get_power (结果、tab_dfti);
排序(tab_power、count_index);
}
}
}
#pragma vector=ADC12_vector
_interrupt void ADC12ISR (void)
{
switch (__evo_in_range (ADC12IV、34))
{
情况0:中断;//向量0:无中断
情况2:中断;//矢量2:ADC 溢出
情况4:中断;//矢量4:ADC 时序溢出
情况6://向量6:ADC12IFG0
Results[索引]= ADC12MEM0;//移动结果
//将结果索引递增,取模;在此处设置 Breakpoint1
//ADC12IFG0 &=~BIT0;
如果(索引==3)
{
索引=0;
ADC12CTL0 &=~ADC12ENC;
ADC12CTL0 &=~ADC12ON;
ADC12CTL0 &=~ADC12SC;
}
索引++;
break;//递增结果索引,模;在此处设置 Breakpoint1
情况8:中断;//向量8:ADC12IFG1
情况10:中断;//向量10:ADC12IFG2
情况12:中断;//向量12:ADC12IFG3
案例14:中断;//矢量14:ADC12IFG4
情况16:中断;//向量16:ADC12IFG5
情况18:中断;//向量18:ADC12IFG6
情况20:中断;//向量20:ADC12IFG7
情况22:中断;//向量22:ADC12IFG8
情况24:中断;//向量24:ADC12IFG9
情况26:中断;//向量26:ADC12IFG10
情况28:中断;//向量28:ADC12IFG11
情况30:中断;//向量30:ADC12IFG12
情况32:中断;//向量32:ADC12IFG13
案例34:中断;//矢量34:ADC12IFG14
默认值:break;
}
返回;
s}
您可以帮助检查此案例吗? 谢谢。
此致、
樱桃