历史上的今天
返回首页

历史上的今天

今天是:2025年01月12日(星期日)

2021年01月12日 | msp430G2553串口通信_launchpad串口通信

2021-01-12 来源:eefocus

MSP430G2553 单片机中集成了 USCI_A0功能模块,可以直接完成串口通信。
一、代码与仿真
TI官方例程中uart代码只有时钟,引脚,串口的初始化,不能直接串口收发,还需要增加发送函数和完善中断函数,我在官方例程的基础上,编写了串口通信程序,并硬件测试通过 。


硬件测试用板(TI的MSP-EXP430G2ET)
注意:图中绿圈跳帽的接法
在水平方向上, 跳线将 TXD 连接到 P1.1, 将RXD 连接到 P1.2 。
在垂直方向上, 跳线将 TXD 连接到 P1.2, 将RXD 连接到 P1.1。
用USCI_A0模块的串口时,RXD和TXD是固定的,板子的跳帽接法固定。
若是软件串口(TimerA定时器和软件结合的串口),则根据RXD和TXD
的设置,来接跳帽。

串口测试助手的收发情况
打开板子,电脑端收到
MADE BY PengChengIT.
G2553 UART
READY!!!
通过电脑端向芯片发字符,发啥收啥。测试成功!

代码说明
接收:
1、UCA0RXBUF是 USCI_A0模块存放要接收的字的寄存器。
2、接收过程触发中断响应,中断向量:USCIAB0RX_VECTOR;
发送
1、有两个发送函数
①putchar(unsigned char tx_data)直接向函数输入要发送的字节
②putstr(char *s),可以直接向函数输入要发送的一串文字、数字。
char *string1=“MADE BY PengchengITn”;
putstr(string1);
2、UCA0TXBUF是 USCI_A0模块存放要发送的字的寄存器。
程序:
收啥发啥,每次收到后P1.0会亮一下。

#include

void putchar(unsigned char tx_data);

void putstr(char *s);



unsigned char RX_DATA;

char *string1="MADE BY PengchengITn";

char string2[]="G2553 UARTn READY!!!n";


int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  if (CALBC1_1MHZ==0xFF) // If calibration constant erased

  {

    while(1);                               // do not load, trap CPU!!

  }

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

  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO

  DCOCTL = CALDCO_1MHZ;

  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD

  P1SEL2 = BIT1 + BIT2 ;                    // P1.1 = RXD, P1.2=TXD

  P1DIR = BIT0;                             //p1.0外接LED为输出状态

  P1OUT &= ~BIT0;

  UCA0CTL1 |= UCSSEL_2;                     // SMCLK

  UCA0BR0 = 104;                            // 1MHz 9600

  UCA0BR1 = 0;                              // 1MHz 9600

  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1

  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**

  IE2 |= UCA0RXIE;                     // Enable USCI_A0 RX interrupt

  putstr(string1);

  putstr(string2);

  __bis_SR_register(LPM0_bits+GIE);       // Enter LPM0, interrupts enabled


}


void putchar(unsigned char tx_data) //发送字符函数

{

while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = tx_data;// TX -> RXed character? 发送字符c

}


void putstr(char *s)//发送字符串函数

{

IE2 &= ~UCA0RXIE;//发送时先关闭接收中断,不接收

//如果没有发完,就继续循环发送

while((*s)!='')

{

putchar(*s);

s++;

}

IE2 |= UCA0RXIE; //发送完了打开接收中断

}


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

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(USCIAB0RX_VECTOR))) USCI0RX_ISR (void)

#else

#error Compiler not supported!

#endif

{

while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? 等待TX buffer为空

UCA0TXBUF = UCA0RXBUF; // TX -> RXed character? 发送接收到的数据

RX_DATA=UCA0RXBUF;

 if(RX_DATA&0x01)

{

P1OUT |= BIT0;

int i; 


for(i=0;i<400;i++); 


P1OUT &= ~BIT0;

}

else

P1OUT &= ~BIT0;                

}


二、 代码分析

时钟配置可以参考:

https://blog.csdn.net/pengchengIT/article/details/105763199

USCI_A0模块配置:

https://blog.csdn.net/weixin_43830248/article/details/85219710


推荐阅读

史海拾趣

奇力新(chilisin)公司的发展小趣事

随着市场的不断变化和客户需求的多样化,奇力新开始拓展产品线,推出了更多类型的电感器产品。这些产品不仅涵盖了传统领域,还涉及到了新能源汽车、工业控制等新兴市场。为了保持市场竞争优势,奇力新不断加大研发投入,提升产品质量和性能。通过不断的市场推广和客户服务,奇力新逐渐赢得了客户的信任和市场的认可。

Gulf Semiconductor公司的发展小趣事

随着业务的不断发展和市场需求的增长,奇力新开始在全球范围内进行布局。公司先后在亚洲、欧洲、美洲等地设立了生产基地和研发中心,提升了产能和研发能力。同时,奇力新还积极寻求与国际知名企业的合作,共同开发新产品和新技术。这些举措不仅提升了奇力新的品牌影响力和市场竞争力,还为其未来的发展奠定了坚实的基础。

DCCOM [ DC COMPONENTS ]公司的发展小趣事

DCCOM公司自创立之初,就注重技术创新和研发投入。在成立初期,公司研发团队成功开发出一种具有高性能和低功耗特点的电子元件,这一创新技术迅速赢得了市场的认可。随着技术的不断迭代和升级,DCCOM逐渐在电子元件市场上占据了一席之地。

CAMDENBOSS公司的发展小趣事

随着环保意识的日益增强,CAMDENBOSS公司积极响应全球绿色生产的号召。公司投入大量资源研发环保型电子连接器产品,采用环保材料和工艺,降低生产过程中的能耗和排放。同时,公司还加强了废弃物的回收和处理工作,实现了资源的循环利用和减少对环境的影响。

3E SECURITY公司的发展小趣事

3E SECURITY公司自创立之初,便以技术创新为核心竞争力。在电子安全领域,公司不断投入研发,推出了一系列具有自主知识产权的安全产品。其中,一款智能安全监控系统凭借其高度集成和智能化特点,迅速在市场上占据了一席之地。通过不断的技术革新,3E SECURITY逐渐在电子安全行业树立了技术领先的形象,吸引了大量合作伙伴和客户的关注。

Compostar Technology Co Ltd公司的发展小趣事

品质是公司发展的基石。Compostar Technology Co Ltd始终坚持严格的品质管理,从原材料采购到生产过程的每一个环节都进行严格的把控。同时,公司还注重品牌建设,通过统一的品牌形象和宣传策略,不断提升品牌知名度和美誉度。这些举措使得公司在激烈的市场竞争中始终保持领先地位。

问答坊 | AI 解惑

组装好仪器后液晶屏花屏

我的仪器组装好后,就是把板子和液晶装到外壳后,液晶在过一段时间后就会花屏,不装到外壳里就没事,弄了好长时间了也不知道怎么回事,请大家帮忙。…

查看全部问答>

WinCE5.0挂接IDE硬盘的疑惑?

WinCE5.0挂接IDE硬盘的疑惑? 有个项目,想使用IDE44pin接口挂接最少64GB的外部存储器,现有如下问题和大家讨论: 1.工作电压: 现在手头上的IDE电路是直接从S3C2440上IO口引出,鉴于3.3V的IO电压,似乎不能正常驱 ...…

查看全部问答>

本人大四学生

已经学习了c51单片机,想问下各位老师,如果以后要从事单片机开发的话,需要再学习哪些大学未传授的知识,谢谢…

查看全部问答>

求binArrayStart和binArrayEnd的定义的线索

问题描述:         大家好。我最近在修改Boot程序。在bootinit.c文件中有如下定义: IMPORT UCHAR        binArrayStart [];                    & ...…

查看全部问答>

问个mfc应用的问题??

在dialog中有个tab control,在每个tab的dialog中有个group box, group box中有个按钮。 现在的现实结果是tab control和group box都显示正常,按钮没有显示,什么原因? app方面菜鸟一个,期待大家指点…

查看全部问答>

单片机的问题

提高单片机 WR,RD 驱动能力一般用什么芯片啊…

查看全部问答>

【芯币兑换】AVR单片机学习板及编程器最详细元器件清单

一、USB型51/AVR单片机编程器元器件清单   二、AVR ATmega16单片机学习板元器件清单           [ 本帖最后由 tiankai001 于 2010-8-8 15:35 编辑 ]…

查看全部问答>

一个2407产生对称PWM的问题````

因为刚学DSP,做的是用2407产生6路3对对称PWM,一开始摸索的时候程序老是编译有问题,今天才把程序搞好``却发现我的板子出了问题,因为编的第一个程序所以没有把挖想放上来大家帮我看看这样写是不是能产生6路3对对称PWM``` 主程序如下 #include \\" ...…

查看全部问答>

求一可用的串口通讯程序

折腾了好几天,实在弄不出来了,哪位有好使的串口程序赏一个,谢谢了。…

查看全部问答>

基于LED点阵显示屏9路抢答器的设计制作程序

基于LED点阵显示屏9路抢答器的设计制作程序…

查看全部问答>