我的目标是向电脑发送AD转换后的数据,但是我的 UCA1TXBUF里始终没有数值,我是根据MSPWare里的示例进行的修改,代码如下:
#include <msp430.h> /* * main.c */ //AD转换结果 //volatile float v; int adc12() { // int n; //AD转换结果 P6SEL |= 0x01; // Enable A/D channel A0 ADC12CTL0 = ADC12ON+ADC12SHT0_8+ADC12MSC; // Turn on ADC12, set sampling time 256ADC12CLK cycles(ADC12CLK=5MHZ) // set multiple sample conversion ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2; // use sampling timer,set repeat-single-channel ADC12IE = 0x01; // Enable ADC12IFG.0 ADC12CTL0 |= ADC12ENC; // Enable conversions ADC12CTL0 |= ADC12SC; // Start conversion __bis_SR_register(LPM0_bits); // Enter LPM4, Enable interrupts __no_operation(); // For debugger // return ADC12MEM0; } int uscia1_uart() //UART串口通信 { P4DIR |= (1<<4)+(1<<5); P4SEL |= (1<<4)+(1<<5); // P4.4,5 = USCI_A1 TXD/RXD // UCA1CTL1 |= UCSWRST; // **Put state machine in reset** UCA1CTL1 |= UCSSEL_1; // CLK = ACLK=32768HZ UCA1BR0 = 0x03; // 32kHz/9600=3.41 UCA1BR1 = 0x00; // UCA1MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0 UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA1IE |= UCRXIE+UCTXIE; // Enable USCI_A1 RX interrupt __bis_SR_register(LPM0_bits + GIE); // Enter LPM3, interrupts enabled // __no_operation(); // For debugger } int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer adc12(); uscia1_uart(); __bis_SR_register(LPM4_bits+GIE);//// Enter LPM4, Enable interrupts return 0; } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=USCI_A1_VECTOR __interrupt void USCI_A1_ISR(void) #elif defined(__GNUC__) void __attribute__ ((interrupt(USCI_A1_VECTOR))) USCI_A1_ISR (void) #else #error Compiler not supported! #endif { while (!(UCA1IFG&UCTXIFG)); // USCI_A0 TX buffer ready? UCA1TXBUF=((long)ADC12MEM0)*(0x21)/(0xFFF); // TX -> RXed character }
请问有什么地方不对吗?