我正在尝试读取传感器数据,并通过蓝牙将其发送到我的计算机,以便绘制图形。 为了进行测试,我只是在连接实际传感器之前尝试从函数发生器发送一个正弦波,但我只能获得大约2Hz的干净正弦波。 我的猜测是,该问题是由ADC采样和UART传输的不同速度引起的,但我对该问题很陌生,因此我无法确定我的问题是什么。
#include <msp430g2553.h>/**
* main.c
*/
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
//----------- 禁用端口2 ----------------------- //
P2OUT &= 0x00;
P2DIR &= 0x00;
//----------- 配置时钟----------------------- //
DCOCTL = 0; //选择最低DCOx和MODx设置
BCSCTL1 = CALC1_1MHz;//设置范围
DCOCTL = CALDCO_1MHz;//设置DCO步进+调制
//----------- 配置引脚--------------------------- //
P1SEL || BIT1 + BIT2;// WFP 1.1 UCA0RXD输入
P1SEL2 || BIT1 + BIT2;// WFP 1.2 UCA0TXD输出
P1DIR || BIT3 + BIT4 + BIT5;//WFP 1.3 ,1.4 ,1.5 设置为输出
P1DIR &=~BIT0 +~BIT6;//WFP 1.0 ,1.6 设置为输入
//----------- 配置ADC--------------------------- //
ADC10CTL0 &=~ENC;
ADC10CTL0 = ADC10SHT_1 + ADC10ON + ADC10SR + MSC + ADC10IE;
ADC10CTL1 = inch_0 + SHS_0 + ADC10DIV_0 + ADC10SSEL_0 + CONSEQ_0;
ADC10AE0 |= BIT0;
//----------- 配置UART(USCI_A0)----------------------- //
UCA0CTL1 |= UCSSEL_2 + UCSSWRST;// USCI时钟= SMCLK,USI_A0已禁用
UCA0BR0 = 104; //数据表中的104
UCA0BR1 = 0; //-选择波特率=9600,clk = SMCLK
UCA0MCTL = UCBRS_1; //数据表中的调制值= 1
UCA0CTL1 &=~UCSWRST; //清除UCSWRST以启用USI_A0
//----------- 启用中断----------------------- //
IE2 |= UCA0TXIE + UCA0RXIE; //启用Tx和Rx中断
_ BIS_SR (GIE); //启用全局中断
同时(1)
{
ADC10CTL0 &=~ENC;
While (ADC10CTL1和ADC10BUSY)
{}
__low_power模式0();
ADC10CTL0 |= ENC + ADC10SC;
}
}//------------------
////
发送和接收中断 ////--------------------------------------------
//
#pragma vector = USCIAB0TX_vector
__interrupt void TransmitInterrupt (void)
{
UCA0TXBUF = ADC10MEM >> 2;// UCA0TXUF IFG2中存储并发送的UART
&=~UCA0Vector IFG;//清除TX标志
}
#pragma = USCIAB0RX_CAvector
{void IS_CA10_INVector
CA10
__low_POWER_MODE_OFF_ON_EXIT();
}
