MSP430G2553   串口通信
记下来 加深一下自己的理解 希望 有新手看到可以有点启发   记录下来自己的点点滴滴  终于感觉自己有那么一点进步了   哈哈  未来的日子在努力一些  一个菜鸟的独白  哈哈哈
直接一点一点的记录下来的这个代码中我学习到的每一点
代码功能:TI官方例程 :PC机向单片机发送字符 然后单片机回发到PC机 就是这么一个简单的代码 我居然。。。。。。。。。。。。。。。。。。。。。。。。。。。。下面逐一的解释一下每一条语句的功能
附上代码:

//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
#include <msp430.h>
int main(void)
{WDTCTL = WDTPW + WDTHOLD;                 // Stop WDTif (CALBC1_1MHZ==0xFF)                    // If calibration constant erased{                                          while(1);                               // do not load, trap CPU!!  }DCOCTL = 0;                               // Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_1MHZ;                    // Set DCODCOCTL = CALDCO_1MHZ;P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXDP1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXDUCA0CTL1 |= UCSSEL_2;                     // SMCLKUCA0BR0 = 104;                            // 1MHz 9600UCA0BR1 = 0;                              // 1MHz 9600UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt//_EINT();__bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

1:首先说一下  G2553串口需要注意的一些事项吧

(1):硬件上的连接  跳线帽要改成HW 而不是SW 注意在板子上仔细找一下可以看到SW和HW的字样
(2):使用外部晶振32768的时候  不能超过9600的波特率  使用内部DCO的时候 可以高起来 但是注意波特率计算        的寄存器不要小于3   切记  波特率超过9600的时候 板子自带的下载电路 已经不支持了  必须外接串口电路
2:介绍一下一个串口代码的简单过程:
1:选择你需要的时钟源 用外部晶振32768还是  内部的DCO  如过选择内部DCO  需要验证一下矫正数据是否被擦除
2:配置  TX  RX的引脚
3:下面开始配置和串口有关的寄存器
First:
USCI_Ax控制寄存器  G2553有两个串口控制寄存器  UCAxCAL0 和UCAxCTL1  一般情况下 作为新手的我们 不需要管UCAxCTL0  默认即可  我们只要配置UCAxCTL1  中的 时钟源选择和 软件复位使能即可 一般选择ACLK或者SMCLK即可   至于软件复位的那位UCSWRSTUCSWRST:0被禁用。USCI复位被释放用于运行。
1被启用。USCI逻辑保持在复位状态。
意思就是说在单片机复位之后 如果 此位是0  那么串口可以正常工作  为1 即保持 复位状态  复位状态后  此位为1 就是说 复位后如果不清零 那么串口是不会工作的
Second:
配置好上面的控制寄存器后 下面就是波特率的配置UCAxBR0波特率控制寄存器0
UCAxBR0=(时钟频率/波特率)的整数部分  次数必须小于0xff  多余的放在UCAxBR1中
Next:
配置波特率调整器:UCAxMCTL =(时钟频率/波特率)的小数部分*8
Next_1:
此时根据需要是否使用串口发送中断和接受中断  务必不要忘记开启总中断
Final:清除UCSWRST位  此时串口开始工作
下面 我来解释一下 那个矫正时钟的问题  就是看门狗下面的这句话
 if (CALBC1_1MHZ==0xFF)                    // If calibration constant erased{                                          while(1);                               // do not load, trap CPU!!  }

作为新手的我们 在看到 CALBC1_1MHZ的时候  我们会很自然的认为他也是类似于BIT0一样的掩码  但是我们经过头文件的搜索后 发现并不是这样

我们可以收到这样一段话:
#define CALDCO_1MHZ_ (0x10FEu) /* DCOCTL Calibration Data for 1MHz */
READ_ONLY DEFC( CALDCO_1MHZ , CALDCO_1MHZ_)
这个 我不过多的说 只说一点:这个片子在出厂的对时钟进行校准过 校准的数据就放在Flash的某段里面 这个CAKBC1_1MHZ就是被定义成了flash里面的一个地址 如果你不小心把Flash里面的数据擦除以后 那么里面的数据就会全部变成0XFF 所以这句话的意思就 取出来CAKBC1_1MHZ这个flash里面的数据和0xff比较 懂点了吧 你可以单步仿真验证一下 下面我把我的仿真贴出来 参考一下
可以看到汇编指令的运行 就是取出来那个地址里面的数据和0XFF做比较  好这个我们就介绍到这里   知道那个东东是个地址就够了  如果想详细了解  可以看看下面这个文章 说的非常详细http://blog.sina.com.cn/s/blog_a85e142101010myq.html


如果有兴趣的话 可以仿真看一下 你的那两个时钟寄存器里面放的值是不是可以相应的DCO选择频率对应上 我看的如下图 3  7 刚好选择1MHZ的时钟  如下图:

新手一个  上面的叙述难免有错误之处  请各位原谅 欢迎讨论分享更好的学习资料 方法



MSP430G2553 串口通信相关推荐

  1. msp430g2553串口通信_软件串口

    msp430g2553通过定时器A和软件代码配合可以形成串口,即软件串口.当然msp430g2553也有硬件串口,内部有自己完整的uart模块. 内部的uart参考:msp430g2533USCI_A ...

  2. msp430G2553串口通信_launchpad串口通信

    MSP430G2553 单片机中集成了 USCI_A0功能模块,可以直接完成串口通信. 一.代码与仿真 TI官方例程中uart代码只有时钟,引脚,串口的初始化,不能直接串口收发,还需要增加发送函数和完 ...

  3. msp430g2553串口接受数据_MSP430G2553串口通信

    MSP430的不同型号,其串行通讯工作模式是一样的.以MSP430G2553为例进行说明.MSP430G2553是20个引脚的16位单片机.具有内置的16位定时器.16k的FLASH和512B的RAM ...

  4. msp430g2553串口接受数据_详细解读:MSP430G2553单片机串口通信

    MSP430的不同型号,其串行通讯工作模式是一样的.以MSP430G2553为例进行说明.MSP430G2553是20个引脚的16位单片机.具有内置的16位定时器.16k的FLASH和512B的RAM ...

  5. msp430g2553串口接受数据_msp430g2553串口通信教程

    msp430g2553串口通信教程 MSP430g2553 串口通信MSP430 的不同型号,其串行通讯工作模式是一样的.以MSP430G2553 为例进行说明. MSP430G2553 是 20 个 ...

  6. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

  7. VC串口通信编程-2

    VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...

  8. Linux ROS与嵌入式的串口通信

    1.根据ros wiki的官方教程 学习即可,并且有许多例子可供学习 http://wiki.ros.org/rosserial_arduino/Tutorials 2.用ASIO读写设备串行口 AS ...

  9. 投影串口测试程序_【原创】串口通信测试程序

    源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

最新文章

  1. 出现这四种情况,才是考虑分库分表的时候!
  2. nginx将9000端口转发映射至 8080
  3. [html] 写html代码时,如果缺少了结束标签,你如何检测及如何预防?
  4. python圆形_Python中的圆形范围
  5. 通俗的说这是一个一对多的例子,看看人家是怎么做的!
  6. 自定义UITabBar
  7. Truffle测试框架
  8. 用python画多来a梦-python3里tkinter中canvas(画板)案例之哆啦A梦
  9. Android 通过联系人姓名查询联系人号码
  10. 线性方程组迭代解法——雅可比(Jacobi)迭代法,Gauss-Seidel迭代法和超松弛(SOR)迭代法
  11. svn汉化插件安装步骤
  12. 证书错误:导航已阻止。此网站的安全证书有问题的解决办法
  13. 语言模型(Language Modeling)”
  14. 使用springboot往数据库中插入汉字报错
  15. 几款有意思的html游戏推荐(在线云玩+源码)
  16. #ps –ef_ps命令 – 显示进程状态
  17. MyEclipse 10 注册码 破解 到期限制
  18. 香港金融中心谁与争锋
  19. iOS网络NSURLSession使用详解
  20. storm mysql spout_storm kafkaSpout 踩坑问题记录! offset问题!

热门文章

  1. 新春寄语——令人期待的2018
  2. 利用Word制作pdf文件的方法
  3. 计算机毕业设计ssm汽车售后服务管理系统
  4. Azure机器学习——Azure机器学习介绍
  5. 绩效沟通的best原则
  6. 计算机网络学习相关的一些网站
  7. Vue的localStorage缓存遗留问题
  8. Excel中的Vlookup函数用法
  9. 2021-2027全球与中国变性酒精市场现状及未来发展趋势
  10. win10怎么安装iis