Thread 中讨论的其他器件:TXB0102
您好!
波特率为115200且频率为1MHz 时、无法在响应缓冲器中获取 AT 命令的响应
我为中断和 UART 初始化编写的代码如下所示
/***** 用于 UART 初始化
P3SEL |= BIT4+BIT5; //分别选择 p3.4和 p3.5作为 TXD 和 RXD
P3DIR |= 0x1A; //将 TX、RTS 设置为输出。 P3.4 = 1且 P3.3 = 1
UCA0CTL1 |= UCSWRST; //**将状态机置于重置中**
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 9; // 1MHz 115200 (请参阅用户指南)
UCA0BR1=0; //1MHz 115200
UCA0MCTL |= UCBRS_1 + UCBRF_0; //+ UCOS16;// Modln UCBRSx=0、UCBRFx=0、
//UCA0MCTL = UCBRS_0 + UCBRF_13+ UCOS16;
UCA0CTL1 &=~UCSWRST; //**初始化 USCI 状态机**
__no_operation();
UCA0IE |= UCTXIE;
UCA0IE |= UCRXIE; //启用 USCI_A3 RX 中断
//_bis_SR_register (LPM0_bits + GIE);
__no_operation();
/********* 中断代码*******
#pragma vector=USCI_A0_Vector
_interrupt void USCI_A0_ISR (void)
{
switch (__evo_in_range (UCA0IV、4))
{
情况0:中断;//向量0 -无中断
情况2:x = UCA0RXBUF;//向量2 - RXIFG
if ((gsmResponseFlag = 1)&&(gsmResponseIndex < 300)){
gsmRResponse[gsmResponseIndex]= x;
gsmResponseIndex++;
}
if (x ='{')){//检查服务器数据的开始
SERVER_DATA_FLAG = 1;//如果检测到启动{、则开始存储数据
SERVER_DATA_INDEX = 0;
}
if (((server_data_FLAG = 1)&&(server_data_index < Server_data_size-1)){
server_data[server_data_index]= x;//存储服务器数据
Server_data_index++;
}
//if (x ='}')//服务器字符串末尾
if ((x ='})
{
SERVER_DATA_FLAG = 0;
server_data[server_data_index]='\0';
Server_data_index++;
SERVER_DATA_FUNCENT();//解析数据并获取时间、网格 ID 等。
}
中断;
情况4:中断;//向量4 - TXIFG
默认值:break;
}
返回;
}
