This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5994:将MSP430G2553的代码更改为MSP430FR5994所需的更改

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430G2553, MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/571282/msp430fr5994-changes-required-to-change-the-code-for-msp430g2553-to-msp430fr5994

部件号:MSP430FR5994
主题中讨论的其他部件: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文件结束

//………………………………………………………………………………………………………………………………………………………

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Chinmay:

    请参阅以下迁移指南(SLAA559): www.ti.com/.../slaa559e.pdf

    最重要的注意事项是时钟系统(章节6.2),端口(章节7.2)和通信模块(章节7.9)。

    此致,
    Ryan