工具/软件:Code Composer Studio
您好,
我正在使用MSP430FR4133启动板。 我正在尝试从MSP430FR4133LP向GSM模块发出AT命令并获得相应的响应。 但当我发送"at\r\n"时,我只在接收缓冲区中收到一个空格(0x000A)。如果我尝试使用循环或中断将接收到的字符逐个保存在字符数组中,它只显示零值。最终需要是, 从SIM800L发送SMS。 我使用的代码附在下面
#include <MSP4S.h>
#include <String.h>
#include <stdint.h>
#include <stdlib.h>
void UART_TX();
void Init_gPIO();
//const char TXData ='at;
无符号char CtrlZ =(char)26;
unsigned char at[4]={"at\r\n"};
unsigned char cmgf[13]={"AT+CMGF=1\r"};
无符号字符cmgs[30]={"AT+CMGS=\"+91.8015万989208\"\r\n"}98.9208万};
unsigned char msg[10]={"hello\r"};
无符号的字符RXData;
内部主(无效)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
Int索引= 0,i = 0;
长int k = 0;
Int ind = 0;
unsigned char tmpLatLong [10]={0};
无符号char txfrBuffer[1]='a';
//配置GPIO
init_gPIO();
PM5CTL0 &=~LCKLPM5;//禁用GPIO开机默认高阻抗模式
//激活1先前配置的端口设置
__bis_sr_register(SCG0);//禁用FLL
CSCTL3 |= SELREF_REFCLK;//将REFO设置为FLL参考源
CSCTL0 =0;//清除DCO和MOD寄存器
CSCTL1 &=~(DCORSEL_7);//首先清除DCO频率选择位
CSCTL1 |= DCORSEL_3;//设置DCO =8MHz
CSCTL2 = FLLD_0 + 243;// DCODIV = 8MHz
__DELAY周期(3);
__BIC_SR_REGISTER(SCG0);//启用FLL
while (CSCTL7和(FLLUNLOCK0 | FLLUNLOCK1));//轮询,直到FLL锁定
CSCTL4 = SELMS__DCOCLKDIV | LAST__REFCLK;//将默认的REFO (~3.2768万Hz)设置为ACLK源,ACLK =3.2768万Hz
//默认DCODIV为MCLK和SMCLK源
//配置UART引脚
P1SEL0 || BIT0 | BIT1;//将2-UART引脚设置为第二个功能
//配置UART
UCA0CTLW0 |= UCSWRST;
UCA0CTLW0 |= UCSSEL__SMCLK;
//波特率计算
// 80万/(16*9600)=9600= 52.083
//分数部分= 0.083
//用户指南表14-4:UCBRSx = 0x49
// UCBRFx = int ((52.083 -52)*16)= 1
UCA0BR0 = 52;// 80万/16/9600</s>9600
UCA0BR1 = 0x00;
UCA0MCTLW = 0x4900 | UCOS16 | UCBRF_1;
UCA0CTLW0 &=~UCSWRST;//初始化eUSCI
UCA0IE = UCTXIE | UCRXIE;//启用USI_A0 RX中断
while (!(UCA0IFG和UCTXIFG));
UART_TXN (&AT[0],4);
K = 20万;
执行{
-k;
}同时(k >0);
// UART_TXN (&cmgf[0],sizeof (cmgf));
// k = 20万;
//执行{
//--k;
//}同时(k >0);
//
// UART_TXN (&cmgs[0],sizeof (cmgs));
// k = 20万;
//执行{
//--k;
//}同时(k >0);
//
// UART_TXN (&msg[0],sizeof (msg));
// k = 200万;
//执行{
//--k;
//}同时(k >0);
//
// UART_TXN(&CtrlZ, sizeof(CtrlZ);
// k = 20万;
//执行{
//--k;
//}同时(k >0);
同时(1);
//__bis_sr_register(LPM3_bits|GIE);//输入LPM3,中断已启用
//__no_operation();//用于调试器
}
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
#否则
错误编译器不受支持!
#endif
{
Switch(__偶 数_in_range(UCA0IV,USI_UART_UCTXCPTIFG))
{
案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
while (!(UCA0IFG和UCRXIFG));
RXData = UCA0RXBUF;
__no_operation();
中断;
案例USI_UART_UCTXIFG:中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
默认值:中断;
}
}
void Init_gPIO()
{
P1DIR = 0xFF;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;
P5DIR = 0xFF;P6DIR = 0xFF;P7DIR = 0xFF;P8DIR = 0xFF;
P1REN = 0xFF;P2REN = 0xFF;P3REN = 0xFF;P4REN = 0xFF;
P5REN = 0xFF;P6REN = 0xFF;P7REN = 0xFF;P8REN = 0xFF;
P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;
P5OUT = 0x00;P6OUT = 0x00;P7OUT = 0x00;P8OUT = 0x00;
}
void UART_TXN(无符号字符*str,int大小)
{
INT I = 0;
while (大小> 0)
{
UCA0TXBUF = str[I++];
while (!(UCA0IFG和UCTXIFG));
大小--;
}
}
是否有使用注册级别程序从CSS中的MSP430FR4133使用SIM800L发送SMS的示例??
提前感谢...
