我的目标是向电脑发送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
}
请问有什么地方不对吗?