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.

[参考译文] MSP430F5529:MSP430F5529可读取多个ADC信道

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/637184/msp430f5529-msp430f5529-reading-multiple-adc-channels

部件号:MSP430F5529

大家好,我正在尝试读取启用了中断的A1和A2 ADC信道。 出于某种原因,我没有得到模拟数据。 下面是我的ADC代码:

//初始化ADC A1和A2

void ADC_int (void){

ADC12CTL0 = ADC12SHT02 + ADC12ON + ADC12MSC;

ADC12CTL1 = ADC12SHP;

ADC12IE = ADC12IE0 + ADC12IE1 + ADC12IE2;

_ENable_INTERRUCT();ADC12CTL1 = ADC12SHP





	;ADC120 ~= ADC12CE0;ADC12CE0;ADC12CE0 = ADC0
	ADC12IFG &=~BIT1;
	ADC12IFG &=~BIT2;
	ADC12IFG &=~BIT3;
	ADC12IFG &=~BIT4;
	ADC12IFG &=~BIT5;
	ADC12IFG &=~BIT6;
	ADC12IFG &=~BIT7;
	ADC12IFG &=~BIT8;
	ADC12IFG &=~BIT9;
	ADC12IFG &=~BITA;
	ADC12IFG &=~BITB;
	ADC12IFG &=~BITC;
	ADC12IFG &=~BITD;
	ADC12IFG &=~Bite;
	ADC12IFG &=~BITF;

}

//主

菜单,同时(1){


	ADC12CTL2 || ADC12SC;	//开始采样/转换
__no_operation();
	IF((ADC12IE &= ADC12IE0)== 0)//重新启用中断
	ADC12IE = ADC12IE0 + ADC12IE1 + ADC12IE2;


}

//中断
#if defined(__TI_Compiler_version__)|| defined (__IAR_SYSTEMS _ICC__)
#pragma vector = ADC12_vector
__interrupt void ADC12_ISR(void)
#Elif defined(__GNUC__)
void __attribute__((interrupt (ADC12_vector)) ADC12_ISR))))#inc #else不

支持#elf编译器#else
#endif
{
SWITCH(__EIV_IN_RANGE(ADC12IV,34))
{//读取ADC12MEMx寄存器将清除相应的中断标志
实例0:
	
	USBCDC_sendDataInBackground (messageADC1,15,CDC0_INTFNUM,1000);
	中断; //矢量0:无中断
	
情况2:
	
	USBCDC_sendDataInBackground (messageADC2,15,CDC0_INTFNUM,1000);//打印消息
	中断; //矢量2:ADC溢出
情况4:
	
	USBCDC_sendDataInBackground (messageADC3,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);
	中断; //矢量4:ADC计时溢出
情况6: //矢量6:ADC12IFG0
	
	ADC12IFG &=~ADC12IFG0;
	ADC12IE &=~ADC12IE0;
	USBCDC_SendDataInBackground (messageADC4,15,CDC0_INTFNUM, 1000);
__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//使用GEE设置退出LPM0
Break;
Case 8:
						//在样本就绪时设置标志
	BatStat = ADC12MEM1;
	ADC12IFG &=~ADC12IFG1;
	ADC12IE &=~ADC12IE1;
	USBCDC_SendDataInBackground (messageADC5,15, CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//使用GEE SET
	Break退出LPM0; //向量8:ADC12IFG1
案例10:
	ADCflag = 1;						//在样本就绪时设置标记
	VSET = ADC12MEM2;
	ADC12IFG &=~ADC12IFG2;
	ADC12IE &=~ADC12IE2;
	USBCDC_SendDataInBackground (messageADC6,15, CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//使用GEE SET
	Break退出LPM0; //矢量10:ADC12IFG2
案例12:
	ADC12IFG &=~ADC12IFG3;
	ADC12IE &=~ADC12IE3;
	USBCDC_SendDataInBackground (messageADC7,15,CDC0_INTFNUM, 1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//使用GEE设置
	中断退出LPM0; //矢量12:ADC12IFG3
案例14:
	ADC12IFG &=~BIT4;
	USBCDC_SendDataInBackground (messageADC8,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0并设置了GIE
	中断; //矢量14:ADC12IFG4
案例16:
	ADC12IFG &=~BIT5;
	USBCDC_SendDataInBackground (messageADC9,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0并设置了GIE
	中断; //矢量16:ADC12IFG5
案例18:
	//ADCflag = 1;						//样本就绪时设置标志
	//__BIC_SR_REGISTER_ON_EXIT (LPM0_bits);//退出活动的CPU
	ADC12IFG &=~BIT6;
	USBCDC_SendPrint DataBackground (消息ADC10,15,
	PMIC_INGE_INDIF0,PM0,PM0,退出时退出,PMIC_GE_DI_DI_BIE 0)
	//矢量18:ADC12IFG6
案例20:
	ADC12IFG &=~BIT7;
	USBCDC_SendDataInBackground (messageADC11,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0
	;使用GEI设置中断 //矢量20:ADC12IFG7
案例22:
	ADC12IFG &=~BIT8;
	USBCDC_SendDataInBackground (messageADC12,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0
	;设置为GEI中断 //矢量22:ADC12IFG8
案例24:
	ADC12IFG &=~BIT9;
	USBCDC_SendDataInBackground (messageADC13,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0并设置了GIE
	中断; //矢量24:ADC12IFG9
案例26:
	ADC12IFG &=~BITA;
	USBCDC_SendDataInBackground (messageADC14,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0;使用GEI设置中断 //矢量26:ADC12IFG10
案例28:
	ADC12IFG &=~BITB;
	USBCDC_SendDataInBackground (messageADC15,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0
	;使用GEI设置中断 //矢量28:ADC12IFG11
案例30:
	ADC12IFG &=~BITC;
	USBCDC_SendDataInBackground (messageADC16,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0
	;使用GEI设置中断 //矢量30:ADC12IFG12
案例32:
	ADC12IFG &=~BITD;
	USBCDC_SendDataInBackground (messageADC17,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0
	,设置为GEI中断 //矢量32:ADC12IFG13
案例34:
	ADC12IFG &=~Bite;
	USBCDC_SendDataInBackground (messageADC18,15,CDC0_INTFNUM,1000);//打印消息
	__BIC_SR_REGISTER_ON_EXIT(LPM0_Bits + GIE);//使用GEI设置
	中断退出LPM0; //矢量34:ADC12IFG14
默认值:
	ADCflag =1;
	USBCDC_sendDataInBackground (messageADC,15,CDC0_INTFNUM,1000);///打印消息
	__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits + GIE);//退出LPM0并清除了GIE (禁用)
	;}中断
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ADC12MCTLx寄存器将全部设置为A0,除非/直到您更改它们
    另请参见寄存器ADC12CTL1中ADC12CONSEQ位的用法

    此外,AD12SC位不在ADC12CTL2中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复,Jeff。 我将再次重复该代码。