请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR2311 主题中讨论的其他部件:Energia
您好,我在串行监视器上发送int值1023时遇到问题。 如果ADC_Result为1023或1或任何其它数字,我看不到串行上的1023。
#include <MSP430-h>
int ADC_result;
#include <stdio.h>
void init_UART ();
void init_led ();
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止WDT
INIT_UART();
init_led ();
//配置GPIO
//P1DIR |= BIT0; //将WFP 1.0 设置为输出方向
//P1OUT &=~BIT0; // WFP 1.0 指示灯熄灭
//配置ADC A1引脚
P1SEL0 |= BIT1;
P1SEL1 |= BIL1;
//禁用GPIO开机默认高阻抗模式以激活
//以前配置的端口设置
PM5CTL0 &=~LOCKLPM2;
//配置ADC10
ADCCTL0 |= ADCSHT_2 | ADCON; // ADCON,S&H=16 ADC CLKS
ADCCTL1 |= ADCSHP; // ADCCLK = MODOSC;采样计时器
ADCCTL2 |= ADCRES; // 10位转换结果
ADCIE |= ADCIE0; //启用ADC连接完全中断
ADCMCTLS0 || ADCINCH_1 | ADCSREF_1; // A1 ADC输入选择;参考电压=1.5V
//配置参考
PMMCTL0_H = PMMPW_H; //解锁PMM寄存器
PMMCTL2 |= INTREFEN; //启用内部参考
__DELAY周期(400); //参考确定延迟
同时(1)
{
ADCCTL0 |= ADCENC | ADCSC; //开始采样和转换
__bis_sr_register (LPM0_BITS | GIE); // LPM0,ADC_ISR将强制退出
IF (ADC_Result < 0x155)
P1OUT &=~BIT0; //清除WFP 1.0 LED关闭
否则
P1OUT |= BIT0; //将WFP 1.0 LED设置为打开
while (!(UCA0IFG & UCTXIFG));//等待USSCI_A0 TX缓冲器就绪
CHAR ADC_Char[16];
Sprintf (ADC_Char,"%d",ADC_Result);
UCA0TXBUF = ADC_Result;
__delay_cycles(5000);
}
}//
此函数对UART进行初始化,以便它可以具有8个数据位,无奇偶校验,1个停止位和9600
void init_UART ()
{
//配置UART引脚
P1SEL0 || BIT6 | BIT7; //将2-UART引脚设置为第二个功能
//配置UART
UCA0CTLW0 |= UCSWRST; //设置软重置启用
UCA0CTLW0 |= UCSSEL__SMCLK; //将SMCLK设置为BRCLK,用于11.52万的波特率
//波特率计算。 将波特率设置为11.52万
UCA0BR0 = 8; // 100万/115200 =11.52万 = 8.68 INT (N)= 8
UCA0MCTLW = 0xD600; // 100万/115200 -11.52万 - INT (100万/115200)11.52万)= 0.68
UCA0BR1 = 0x00; // UCBRSx值= 0xD6
UCA0CTLW0 &=~UCSWRST; //初始化eUSCI
}
void init_led (){
//配置GPIO
P1DIR || BIT0; //将WFP 1.0 设置为输出方向
P1OUT &=~BIT0; //
编译器1.0 LED关闭}// 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))#elvector))不支持#AD_else
#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位
中断;
默认:
中断;
}
}