MSP430F247串口发送字符串并接受PC机发来的并送回电脑显示

2020-03-23来源: eefocus关键字:MSP430F247  串口  发送字符串  电脑显示

//******************************************************************************

//   MSP430x24x Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK

//

//   实验效果说明:首先发送一个数组的数据到PC,然后接受PC发送来的数据,在发送到

//                  PC机上。

//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2

//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz

//

//                MSP430F249

//             -----------------

//         /||              XIN|-

//          | |                 |

//          --|RST          XOUT|-

//            |                 |

//            |     P3.4/UCA0TXD|------------>

//            |                 | 9600 - 8N1

//            |     P3.5/UCA0RXD|<------------

//

//******************************************************************************

#include 

char CharTx[21]={"ni hao ma xu yun rn"};    //发到PC的数组

char *a;                                      //指针,方便发送数组


int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;          // 关闭看门狗

  if (CALBC1_1MHZ==0xFF)              // 是否擦除校准常数

  {

    while(1);                        // 不加载, 锁定 CPU!!

  } 

  DCOCTL = 0;                        // Select lowest DCOx and MODx settings

  BCSCTL1 = CALBC1_1MHZ;             // Set DCO  不懂,求解??

  DCOCTL = CALDCO_1MHZ;

  P3SEL = 0x30;                      // P3.4,5 = USCI_A0 TXD/RXD,第二功能选择

  UCA0CTL1 |= UCSSEL_2;              // USCI时钟模式选择:SMCLK

  UCA0BR0 = 104;                     // 典型的波特率设置,在TI提供的数据

  UCA0BR1 = 0;                       // 表中查询的到,15.3.13小节

  

  UCA0MCTL = UCBRS0;                 // 设置的波特率还存在误差,需要调整,这意味

                                     // 具有调整的效果,详细的看头文件中,在数据

                                     // 表中UCOS16 =0,1MHZ,9600,UCBRSx=1

  

  UCA0CTL1 &= ~UCSWRST;              // 初始化USCI,复位释放

  IE2 |= UCA0RXIE;                   // 使能 USCI_A0 RX 中断。

  

  a=CharTx;                          //把数组的首地址送到指针

  while(*a != '')                  //判断数组发送完成没有,否-继续

  {

    while (!(IFG2&UCA0TXIFG));       // USCI_A0 发送寄存器准备好没有?

    UCA0TXBUF = *a++;                //依次循环发送

  }


  __bis_SR_register(LPM0_bits + GIE);   // 进入 LPM0, 等待中断发生

}


//  Echo back RXed character, confirm TX buffer is ready first

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)

{

  while (!(IFG2&UCA0TXIFG));          // USCI_A0 发送寄存器准备好没有?

  UCA0TXBUF = UCA0RXBUF;              // 接收的单字符返回到PC机,只能接收单字符

}

关键字:MSP430F247  串口  发送字符串  电脑显示 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492342.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:使用Msp430的串口中断接收一包数据
下一篇:MSP430F2370(三)UART串口通讯

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

msp430f149外中断问题
。)其次,并没有配置什么上拉下拉电阻。就是依照上面的3个寄存器配置的。可以用。(芯片是msp430f149)。硬件没有问题,就是要用软件来解决了:第一种方法:在外中断中关闭 外中断使能,然后在外部程序合适的地方再开启。第二种方法:在外中断中 加入消抖,就可以了。至于为什么,我也不清楚。。A3:这个问题我到现在也想不通,理不顺,如果有大神看到的话,请一定要留言告诉我。在师兄的帮助下整个系统算是完成了。更正一下上面的一些问题。对于外部输入到芯片的引脚,首先值得质疑一下:这个输入引脚的状态到底能不能用万用表来测量。我这里给出的答案是不可取的。(感觉可以用示波器查看,原理的话不是很清楚)所以在写完代码后测试的时候,不应该靠万用表的数值来看是
发表于 2020-03-30
MSP430G2553与MSP430F5336系列单片机总结[3]——看门狗定时器
P1.0  _BIS_SR(LPM4_bits);                       // Stop all clocks}/* * f=16.62hz *看门狗定时器相当于定时32ms,所以总周期为64ms,频率为16hz */接下来是MSP430F5336单片机的看门狗程序:1.看门狗定时器利用中断控制产生#include /* * 默认情况下WDT的时钟都是SMCLK时钟采用的是XT1CLK,即1Mhz,WDTIS2定时32ms启用中断 
发表于 2020-03-29
MSP430F249数码管显示
;                  *******************************************************************/#include "MSP430x24x.h"#define uint unsigned int#define uchar unsigned char/***设置数码管显示****/#define L1_OFF   P4OUT|=BIT0 //关L1#define L1_NO    P4OUT&=~BIT0 //点亮
发表于 2020-03-28
MSP430F5529库函数
    笔者大学期间写的MSP430F5529库函数,期间断断续续写了快一年,从刚开始的1.0版本到最后的2.+版本,最后才有了让笔者满意的库函数。    MSP430是一款中低端的单片机,以至于很多人认为它不需要库函数,选择使用手写代码开发,然而,笔者却不这么认为,在库函数完成后,笔者使用该单片机开发时相比之前的速度提升了很多倍,当然一个不可忽略的原因是我更熟悉这单片机了。    库函数几乎包括了单片机上所有的外设模块,除此之外,笔者还提供了常用的OLED,LCD,LED,KEY,NRF24L01等模块的驱动库。    遗憾的是,笔者并没有精力写出
发表于 2020-03-26
MSP430F2370(三)UART串口通讯
。==============================================================源代码://编写时间:2017.2.20//库函数功能:串口收发和初始化函数,测试用开发板:launchpad with msp430g2553//MCU型号:MSP430F2370#include "msp430g2553.h"#define CPU_F (double)8000000#define delayUs(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delayMs(x) __delay_cycles((long)(CPU_F*(double)x/1000.0
发表于 2020-03-24
MSP430 串口初始化,及串口操作
#include  <msp430x14x.h> /*    关于UART0串口的配置,及操作函数说明*//* 一、uart0初始化*/ void uart0_idev_init(void){        P3SEL  |= BIT4  + BIT5;     // 1. 选择P3.4和P3.5做UART0通信端口        ME1    |= UTXE0 + URXE0;    // 2. 使能
发表于 2020-03-10
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved