请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR6989 工具/软件:Code Composer Studio
你(们)好
我尝试使用TI示例MSP430F55xx_ADC_06.c读取12位ADC A4,A5,A6,A7,进行了一些更改,但程序似乎卡在 __bis_sr_register(GIE)。 下面是代码。
#include <msp430fr6989.h>
#define Num_of_results 8
volatile unsigned int A0结果[Num_of_results];
volatile unsigned int A1results[Num_of_results];
volatile unsigned int A2results[Num_of_results];
volatile unsigned WDint A3results[Num_of_results];
void main(void)
{
DTTCTTL = WDTPW+WHOLD; //停止监视计时器
P8SEL0 = 0x0F;
P8SEL1 = 0x0F; //启用A/D通道输入
ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_8;//打开ADC12,延长采样时间
//为了避免结果溢出
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3; //使用采样计时器,重复序列
ADC12MCTL0 = ADC12INCH_4; // ref+=AVcc,通道= A0
ADC12MCTL1 = ADC12INCH_5; // ref+=AVcc,channel = A1
ADC12MCTL2 = ADC12INCH_6; // ref+=AVcc,通道= A2
ADC12MCTL3 = ADC12INCH_7+ADC12EOS; // ref+=AVcc,channel = A3,end seq.
ADC12IFGR0 = 0x08; //启用ADC12IFG.3
ADC12CTL0 |= ADC12ENC; //启用转换
ADC12CTL0 |= ADC12SC; //开始转换-软件触发器
__bis_sr_register (LPM0_Bits + GIE); //输入LPM0,启用中断
__no_operation(); //用于调试器
}
#pragma vector=ADC12_vector
__interrupt void ADC12ISR (void)
{
静态无符号int索引=0;
switch(__偶 数_in_range(ADC12IV,34))
{
案例0:中断; //矢量0:无中断
情况2:中断; //矢量2:ADC溢出
情况4:中断; //矢量4:ADC计时溢出
情况6:中断; //向量6:ADC12IFG0
案例8:中断; //矢量8:ADC12IFG1
案例10:中断; //矢量10:ADC12IFG2
案例12: //向量12:ADC12IFG3
A0results[index]= ADC12MEM0; //移动A0结果,IFG被清除
A1results[index]= ADC12MEM1; //移动A1结果,IFG被清除
A2results[index]= ADC12MEM2; //移动A2结果,IFG被清除
A3results[index]= ADC12MEM3; //移动A3结果,IFG被清除
索引++; //递增结果索引,模数;在此处设置断点1
如果(索引=8)
{
(索引=0);
}
判例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
默认:中断;
}