微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 430g2553编程入门小问题

430g2553编程入门小问题

时间:10-02 整理:3721RD 点击:
最近在自学430G2553launchpad,从TI例程里面摘取了ad转换和串口通讯的程序,想弄在一起,结果中断那块貌似出问题了,求大神解答。程序如下:

  1. #include <msp430.h>

  2. long temp;
  3. volatile unsigned int i;

  4. int main(void)
  5. {
  6.   WDTCTL = WDTPW + WDTHOLD;                  // Stop WDT
  7.   
  8.   ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
  9.   ADC10CTL1 = INCH_4;                        // input A1,IN P1.4
  10.   ADC10AE0 |= 0x02;                          // PA.1 ADC option select
  11. // P1DIR |= 0x01;                             // Set P1.0 to output direction

  12.   if (CALBC1_1MHZ==0xFF)                    // If calibration constant erased
  13.   {                                                                                       
  14.     while(1);                               // do not load, trap CPU!        
  15.   }
  16.   DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  17.   BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  18.   DCOCTL = CALDCO_1MHZ;
  19.   P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  20.   P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD
  21.   UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  22.   UCA0BR0 = 104;                            // 1MHz 9600
  23.   UCA0BR1 = 0;                              // 1MHz 9600
  24.   UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1
  25.   UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  26.   IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt
  27.   IE2 |= UCA0TXIE;                          // Enable USCI_A0 TX interrupt


  28.   for (;;)
  29.   {
  30.     ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start

  31.     temp=ADC10MEM ;
  32.    
  33.   __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
  34.    }
  35. }


  36. // send AD character, confirm TX buffer is ready first
  37. #pragma vector=USCIAB0TX_VECTOR
  38. __interrupt void USCI0TX_ISR(void)
  39. {
  40. while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?
  41. UCA0TXBUF = temp;                       // TX -> temp character
  42. ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
  43. temp=ADC10MEM ;
  44. }

复制代码


这个程序还是想做一个ad转换结果发送到电脑上面的功能

temp 是长整型 数据结构有问题  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top