TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430FR5724: 低功耗程序相关问题

Part Number:MSP430FR5724Other Parts Discussed in Thread:MSPWARE

while(1){
		if(count==3)
		{
			ADC10CTL0&=~ADC10ENC;
			TB0CTL|=TBSSEL_1+TBCLR;
			TB0CCR0=50000;
			TB0CCTL0|=CCIE;
			__bis_SR_register(LPM0_bits + GIE);
			while(count==3);
		}
		while(ADC10CTL1&ADC10BUSY);
		ADC10CTL0|=ADC10ENC+ADC10SC;
	}

这里是main函数的一部分,您好,请问一下在低功耗的情况下还能用while做相关的判断吗

Susan Yang:

__bis_SR_register(LPM0_bits + GIE);

执行上一句之后会进入睡眠模式 

请问您为何要在此加一句进入低功耗呢?

,

user6580316:

#pragma vector=TIMER0_B0_VECTOR
__interrupt void TIMER0_B0_ISR(void)
{if(count==3){time_count++;if(time_count==15){datadeal();}}
}

您好,上面部分是中断里的程序,主要思路是想定时器计时0.05秒,循环14次,一共0.7s,在计时的过程中,想进入低功耗模式,datadeal()函数里有count清零的操作,当count清零以后跳出上面的循环。

,

Susan Yang:

user6580316 说:在计时的过程中,想进入低功耗模式,

这个是可以在计时过程中进入低功耗的,如例程所示

可以在mspware内找到例程 MSP430Ware_3_80_13_03\examples\devices\MSP430FR57xx\MSP430FR57xx_Code_Examples\C

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, enable interrupts

进入低功耗并打开中断。建议将该语句放在while之外,不然现在的话,后面的语句不能执行

关于各个低功耗下的时钟情况,您可以看一下用户指南的

Table 1-2. Operation Modes 

,

user6580316:

您好,请问一下将该语句放在while之外具体是什么意思,是低功耗后不要加while语句吗

,

Susan Yang:

user6580316 说:是低功耗后不要加while语句吗

是的,低功耗语句放在while循环之后,如例程中的使用方式

,

user6580316:

for (;;){__delay_cycles(5000);ADC10CTL0 |= ADC10ENC + ADC10SC;// Sampling and conversion start__bis_SR_register(CPUOFF + GIE);// LPM0, ADC10_ISR will force exit__no_operation();// For debug onlyif (ADC_Result < 0x1FF)P1OUT &= ~BIT0;// Clear P1.0 LED offelseP1OUT |= BIT0;// Set P1.0 LED on}// ADC10 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC10_VECTOR))) ADC10_ISR (void)
#else
#error Compiler not supported!
#endif
{switch(__even_in_range(ADC10IV,12)){case0: break;// No interruptcase2: break;// conversion result overflowcase4: break;// conversion time overflowcase6: break;// ADC10HIcase8: break;// ADC10LOcase 10: break;// ADC10INcase 12: ADC_Result = ADC10MEM0;__bic_SR_register_on_exit(CPUOFF);break;// Clear CPUOFF bit from 0(SR)default: break;}}

您好,这是MSP430FR57xx_adc10_01.c中的一部分,想请问这里在for循环中的低功耗程序,是只有当进入中断以后退出低功耗模式才会执行之后的程序吗

,

Susan Yang:

您可以看下例程的说明:

In Mainloop MSP430 waits in LPM0 to save power until ADC10// conversion complete, ADC10_ISR will force exit from LPM0 in Mainloop on// reti.

__bis_SR_register(CPUOFF + GIE);        // LPM0, ADC10_ISR will force exit

上面的语句是进入LPM0等待ADC转换完成

,

user6580316:

好的,谢谢专家

,

Susan Yang:

不客气`~

赞(0)
未经允许不得转载:TI中文支持网 » MSP430FR5724: 低功耗程序相关问题
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1