打印
[GPS模块]

MSP430F149控制TC35I时设置的波特率为多少

[复制链接]
1915|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Armais|  楼主 | 2013-12-5 18:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手,刚刚接触430,希望大神们能教教我,一个人搞有点无力啊。~!!
MSP430与TC35I通信的时候,UART初始化,需要设置的波特率是多少?我知道的公式是这样的
波特率=( BRCLK /(UBR+(M8+...M2+M1)/8)
我知道UBR是怎么设定的,但是BRCLK是什么我就不知道了,求大神指导,

相关帖子

沙发
Armais|  楼主 | 2013-12-5 18:14 | 只看该作者
附上我的代码,主要实现短信发送功能。如有错误,请斧正。

#include<msp430x14x.h>
#include"BoardConfig.h"
unsigned char AT[]="AT\n";                                //握手信号//3Chars
unsigned char ATCMGF[]="AT+CMGF=1\n";                    //text格式//10Chars
//unsigned char ATCMGS[]="AT+CMGS=\"18758363061\"\n";
//双引号是十进制34,22H,0x22.
unsigned char ATCMGS[]="AT+CMGS=";
unsigned char PHIONN[]="18758363061";

//
unsigned char ATIPR[]="AT+IPR=11059200\n";

void GsmSend(void);
void UART0_Init (void);
void DelayNS (unsigned int dly);
void Delay(unsigned long t);

unsigned char Data[]="kiss";
//0x1A
//主程序
void main()
{
  BoardConfig(0xb8);
  WDTCTL = WDTPW +WDTHOLD;//关闭 看门狗
  UART0_Init();//UART初始化
  DelayNS(50);//等待
  GsmSend();//发送
  
}
//uart初始化
void UART0_Init(void)
{
  ME1 |= UTXE0 +URXE0;          //使能UART0的发送和接收
                                //IE1 |= URXIE0;    //使能接收中断
                                //IE1 |= UTXIE0;    //使能发送中断
  UCTL0 = CHAR;                 //UCTL寄存器控制UASRT的通信协议、通信模式、校验位。CHAR=1表示发送数据为8位
  UTCTL0 = SSEL0;               //UTCTL寄存器控制模块发送操作。SSEL1=0,SSEL0=1;则选择了ACLK时钟。
                                /*UBR0,UBR1,UMCTL三个控制波特率*/
  UBR00 = 0X03;
  UBR10 = 0X00;                 //UBR10高8位,UBR00低8位,加起来16位。波特率整数部分
  UMCTL0 =0X4A;                 //控制波特率小数部分。0100 1010,
                               /*     公式       波特率=( BRCLK /(UBR+(M6+M3+M1)/8)      */
  UCTL0 &= ~SWRST;              //软件复位使能位   =0时表示UASRT被允许
  IE1 |= URXIE0;                  //USART接收中断使能
  P3SEL = 0X30;                 //P3.4/P3.5功能为外围模块,即,UTXE0,URXE0为控制外围模块。
  P3DIR = 0x10;                 //控制P3.4为发送,输出
}
//时间延迟
void DelayNS(unsigned int dly)
{
  unsigned int i;
  for(;dly>0;dly--)
    for(i=0;i<2000;i++);
}
//消息发送
void GsmSend(void)
{
  unsigned char i;
  ////////////////////////////////////////////////////////////////
  for(i=0;i<17;i++)
  {
    TXBUF0 = ATIPR[i];           //设置波特率11059200\n
    while((IFG1 & UTXIFG0)==0);//判断发送结束没???
  }
  DelayNS(200);
//////////////////////////////////////////////////////////////////
   
   
  for(i=0;i<4;i++)
  {
    TXBUF0 = AT[i];           //AT[]="AT\n";
    while((IFG1 & UTXIFG0)==0);//判断发送结束没???
  }
  DelayNS(200);
  /////////////////////////////////
  for(i=0;i<11;i++)
   
  {
    TXBUF0 = ATCMGF[i];       //ATCMGF[]="AT+CMGF=1\n"
    while((IFG1 & UTXIFG0)==0);
  }
  DelayNS(200);
  /*for(i=0;i<9;i++)
  {
    TXBUF0 = ATCMGS[i];       //ATCMGS[]="AT+CMGS=\"15922041115\"\r"
    while((IFG1 & UTXIFG0)==0);
  }*/
  /////////////////////////////////
  for(i=0;i<8;i++)//表示AT+CMGS=
  {
    TXBUF0 = ATCMGS[i];
    while((IFG1 & UTXIFG0)==0);
  }
  TXBUF0 = 0x22;//ASCii码表示引号
  for(i=0;i<11;i++)//电话号码
  {
    TXBUF0 = PHIONN[i];
    while((IFG1 & UTXIFG0)==0);
  }
  TXBUF0 = 0x22;//ASCii码表示引号
  TXBUF0 = 0x0D;//ASCii码表示换行\n
   
  ///////////////////////////////
   
   
  while(!(IFG1 & UTXIFG0));
  DelayNS(200);
  for(i=0;i<11;i++)
  {
    TXBUF0 = Data[i];
    while(!(IFG1 & UTXIFG0));
  }
  TXBUF0 = 0x1a;               //结束ASCii码中0x1a表示结束
  while(!(IFG1 & UTXIFG0));
}

使用特权

评论回复
板凳
Armais|  楼主 | 2013-12-5 20:26 | 只看该作者
帖子秒沉,,,菜鸟现场等待。

使用特权

评论回复
地板
chenluck| | 2013-12-5 22:08 | 只看该作者
这年头TC35I是天价啊,还在用!:lol

使用特权

评论回复
5
chunyang| | 2013-12-5 23:14 | 只看该作者
TC35i的串口波特率是自适应的,只要是标准系列即可,比如9600、19200等都可以。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
Armais + 1 赞一个!
6
m__dd| | 2013-12-6 08:34 | 只看该作者
波特率是自适应的,可以用指令查询,也可用指令将波特率设为固定

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

12

帖子

0

粉丝