主题中讨论的其他部件:MSP430G2553,
您好,
要将代码从msp430g2553更改为MSP430FR5994以使以下代码正常工作,需要进行哪些更改。
此致,
包含"msp430g2553.h"
#include "UART.h"//将UART文件与主代码一起附加
void gsm ();//函数原型
内部主(无效)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
BCSCTL1 = CALC1_8MHZ;//根据Launchpad 8MHZ制作FREQUNCY
DCOCTL = CALDCO_8MHZ;
UART_INIT();//调用文件中可用的UART INIT函数
__enable_interrupt ();//启用中断
__DELAY周期(10万);
GSM();//调用GSM功能
}
空gsm ()
{
UART_puts((car *)"at");//命令用于初始化GSM
UART_putc (0x0A);//ENTER
UART_PUTc (0x0D);//回车
__DELAY周期(1000万);//延迟...等待来自GSM的“确定”
UART_puts (((char *)"AT+CMGF=1");//通信
UART_putc (0x0A);
UART_putc (0x0D);
__DELAY周期(1000万);//等待确定
UART_puts (((char *)"AT+CMGS=\"8123902188\");//向特定号码发送消息
UART_putc (0x0A);
UART_putc (0x0D);
UART_puts (((char *)"hello");//发送hello
UART_putc (0x1A);//CTRL Z
//硬件配置后,消息将被发送
//附加UART文件或在同一文件中写入初始化代码并发送消息...
}
// gsm.c文件结束
//………………………………………………………………………………………………………………………………………………………
/* 创建 名为 urat.c的文件 并粘贴到给定的程序下面
/*
*这是在MSP430G2553微控制器上使用USCI的UART硬件演示的UART.c文件。
*将终端中的波特率设置为9600 8N1。
*使用TI MSP-430 LaunchPad时,您需要穿过TXD和RXD跳线。
*/
包含"msp430g2553.h"
包括"UART.h"
#define LED BIT0
#定义RXD BIT1.
#define TXD BIT2.(定义TXD BIIT2。
TX_CHAR的易失性无符号int TX_flag; //邮箱标志。
volatile unsigned char tx_char; //此char是进入UART的最新char
rx_char的易失性无符号int rx_flag;//邮箱标志。
volatile unsigned char rx_char; //此char是UART中最新的char
/*UART_INIT
*通过USCI设置UART接口
*输入:无
*返回:无
*/
void UART_INIT (void)
{
P1SEL = RXD + TXD; //设置I/O
P1SEL2 = RXD + TXD;
P1DIR |= LED; /WFP 1.0 红色LED。 在收到CHAR时切换。
P1OUT |= LED; //LED熄灭
UCA0CTL1 || UCSSEL_2; //SMCLK
// 8000 ,000Hz,9600Baud,UCBRx=52,UCBRSx=0,UCBRFx=1
UCA0BR0 = 52; //8MHz,OSC169600
UCA0BR1 = 0; //(8MHz/9600)/16)= 52.0.8333万
UCA0MCTL = 0x10|UCOS16; //UCBRFx=1,UCBRSx=0,UCOS16=1
UCA0CTL1 &=~UCSWRST; //USCI状态机
IE2 |= UCA0RXIE; //启用USI_A0 RX中断
Rx_flag = 0; //将Rx_flag设置为0
TX_FLAG = 0; //将TX_FLAG设置为0
返回;
}
/*UART_getc
*从UART获取字符。 等待它得到一个
*输入:无
*返回:来自UART的CHAR
*/
unsigned char UART_getc()// 等待来自UART的有效char
{
while (Rx_flag ==0); //等待设置Rx_flag
Rx_flag = 0; //ACK Rx_flag
返回rx_char;
}
/*UART_GETS
*从UART获取已知长度的字符串。 按Enter或填充字符串缓冲区时,字符串终止
当收到所有字符或回车符(\r)时,*将返回。 等待数据。
* input:数组指针和长度
*返回:无
*/
void UART_GETS (char*数组,int长度)
{
无符号int i =0;
while ((i < length)) //grab data,直到数组填充
{
array[i]= UART_getc();
IF (Array[i]=='\r') //如果我们收到主服务器要结束的\r
{
对于(; i < length ; i++) //使用\0 nul填充字符串的其余部分。 用\0覆盖\r
{
array[i]='\0';
}
中断;
}
I++;
}
返回;
}
/*UART_putc
*向UART发送字符。 如果UART正忙,将等待
*输入:要发送的字符
*返回:无
*/
void UART_putc (无符号字符c)
{
tx_char = c; //将char放入tx_char中
IE2 |= UCA0TXIE; //启用USI_A0 TX中断
while (TX_FLAG == 1); //必须等待TX缓冲区
TX_FLAG = 1; //重置TX_FLAG
返回;
}
/*UART_puts
*向UART发送字符串。 如果UART正忙,将等待
* input:指向要发送的字符串的指针
*返回:无
*/
void UART_puts(car *str) //将字符串发送到UART。
{
while (* str) UART_PUTc (* str++); //通过字符串前进到末尾
返回;
}
#pragma vector = USCIAB0TX_vector //UART TX USCI中断
__interrupt void USCI0TX_ISR(void)
{
UCA0TXBUF = TX_CHAR; //将CHAR复制到TX缓冲区
TX_FLAG = 0; //ACK TX_FLAG
IE2 &=~UCA0TXIE; //关闭中断以节省CPU
}
#pragma vector = USCIAB0RX_vector //UART RX USCI中断。 这在USCI收到CHAR时触发。
__interrupt void USCI0RX_ISR(void)
{
RX_CHAR = UCA0RXBUF; //从RX缓冲区复制,在这样做时,我们也确认中断
Rx_flag = 1; //将Rx_flag设置为1
P1OUT ^= LED; //通过切换LED通知我们收到了一个字符
}
// urat.c文件结束
//………………………………………………………………………………………………………………………………………………………
/* 创建 名为 urat.h的文件 并粘贴到给定程序下方
/*
*这是在MSP430G2553微控制器上使用USCI的UART硬件演示的uart.h文件。
*将终端中的波特率设置为9600 8N1。
*使用TI MSP-430 LaunchPad时,您需要穿过TXD和RXD跳线。
*/
/*Rx_flag
*其他模块将使用此标志来检查并查看是否发生了新的传输。
*这是只读的。 请勿写入,否则UART可能会崩溃。
*/
extern volatile unsigned int rx_flag;
/*UART_INIT
*通过USCI设置UART接口
*输入:无
*返回:无
*/
void UART_INIT (void);
/*UART_getc
*从UART获取字符。 等待它得到一个
*输入:无
*返回:来自UART的CHAR
*/
unsigned char UART_getc();
/*UART_GETS
*从UART获取已知长度的字符串。 按Enter或填充字符串缓冲区时,字符串终止
当收到所有字符或回车符(\r)时,*将返回。 等待数据。
* input:数组指针和长度
*返回:无
*/
void UART_GET();
/*UART_putc
*向UART发送字符。 如果UART正忙,将等待
*输入:要发送的字符
*返回:无
*/
void UART_putc (unsigned char c);
/*UART_puts
*向UART发送字符串。 如果UART正忙,将等待
* input:指向要发送的字符串的指针
*返回:无
*/
void UART_puts(car *str);
// urat.h文件结束
//………………………………………………………………………………………………………………………………………………………