MSP430G2553 单片机中集成了 USCI_A0功能模块,可以直接完成串口通信。 硬件测试用板(TI的MSP-EXP430G2ET) 串口测试助手的收发情况   代码说明 二、 代码分析
 一、代码与仿真
 TI官方例程中uart代码只有时钟,引脚,串口的初始化,不能直接串口收发,还需要增加发送函数和完善中断函数,我在官方例程的基础上,编写了串口通信程序,并硬件测试通过 😉。
 注意:图中绿圈跳帽的接法
 在水平方向上, 跳线将 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 <msp430.h> 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
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)