请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他部件:MSP430FR2433
各位,如下所示,这是一个简单的ADC示例。 以WFP 1.1 模拟频道1为基础,当您改变电压时,功用计会点亮和熄灭WFP 1.0 LED。 我想在这里做的
在A1和A2的同时,再使用1个ADC通道的1.2 A2通道,A2可以使WFP的1.2 灯亮起。 我想使用2个ADC信道。 我该怎么做?
// MSP430FR24xx演示- ADC,样品A1,AVcc参考,如果A1 > 0.5 ,则设置LED
////
说明:此示例适用于单通道单转换模式。
//在A1上制作了一个样本,默认引用AVcc。
//软件将ADCSC设置为开始采样和转换- ADCSC自动
//在EOC清除。 ADC内部振荡器使采样(16x)和转换时间变短。
//在Mainloop中,MSP430等待LPM0以节省电源,直到ADC转换完成,
// ADC_ISR将强制从reti上Mainloop中的LPM0退出。
//如果A1 > 0.5
AVcc,则为WFP 1.0 SET,否则重置。
// aclk =默认的REFO ~3.2768万Hz,MCLK = SMCLK =默认的DCODIV ~1MHz。
////
MSP430FR2433
// --------
// /|\\| |//
|| |//
--|RST |//
| |//
>>---|WFP 1.1 / A1.
6.0 //////
赵伟
//德州仪器(TI)
// 2014年1月
//采用IAR嵌入式工作平台v 6.20 和代码编辑器Studio v构建1.0
#include <MSP430-h>
unsigned int ADC_result;
int main(void){
WDTCTL = WDTPW | WDTHOLD; //停止WDT
//配置GPIO
P1DIR || BIT0; //将WFP 1.0 设置为输出方向
P1OUT &=~BIT0; // WFP 1.0 指示灯熄灭
//配置ADC A1引脚
SYSCFG2 || ADCPCTL1;
//禁用GPIO开机默认高阻抗模式以激活
//以前配置的端口设置
PM5CTL0 &=~LOCKLPM2;
//配置ADC10
ADCCTL0 |= ADCSHT_2 | ADCON; // ADCON,S&H=16 ADC CLKS
ADCCTL1 |= ADCSHP; // ADCCLK = MODOSC;采样计时器
ADCCTL2 |= ADCRES; // 10位转换结果
ADCMCTLS0 || ADCINCH_1; // A1 ADC输入选择;Vref=AVCC
ADCIE |= ADCIE0; //启用ADC连接完全中断
同时(1)
{
ADCCTL0 |= ADCENC | ADCSC; //开始采样和转换
__bis_sr_register (LPM0_BITS | GIE); // LPM0,ADC_ISR将强制退出
__no_operation(); //仅用于调试
IF (ADC_Result < 0x1FF)
P1OUT &=~BIT0; //清除WFP 1.0 LED关闭
否则
P1OUT |= BIT0; //将WFP 1.0 LED设置为打开
__delay_cycles(5000);
}
}//
ADC中断服务例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=ADC_vector
__interrupt void ADC_ISR(void)
#Elif defined(__GNUC__)
void __attribute__(((interrupt (ADC_vector)) AD_void)
#endif
{
SWITCH(__EIV_IN_RANGE(ADCIV,ADCIV_ADCIFG))
{
案例ADCIV_NONE:
中断;
Case ADCIV_ADCOVIFG:
中断;
Case ADCIV_ADCTOVIFG:
中断;
Case ADCIV_ADCHIIFG:
中断;
Case ADCIV_ADCLOIFG:
中断;
Case ADCIV_ADCINIFG:
中断;
问题ADCIV_ADCIFG:
ADC_Result = ADCMEM0;
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits); //从LPM0中清除CPUOFF位
中断;
默认:
中断;
}
}