4213|18

60

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

msp430 USART模块-双向串口通信,接受长度为8的字符串,再发送回PC机 [复制链接]

msp430 USART模块。下边是TI官方的源码
功能:双向串口通信,先接受长度为8的字符串,再发送回PC机
问题描述:加入红色部分,判断TXBUF是否准备好,就无法实现发送功能


//******************************************************************************
//  MSP-FET430x140 Demo - USART0, Ultra-Low Pwr UART 9600 RX/TX, 32kHz ACLK
//
//  Description: This program demonstrates a full-duplex 9600-baud UART using
//  USART0 and a 32kHz crystal.  The program will wait in LPM3, and receive
//  a string[8] and echo back the complete string.
//  ACLK = LFXT1 = UCLK0, MCLK = SMCLK = default DCO ~ 800KHz
//  Baud rate divider with 32768hz XTAL @9600 = 32768Hz/9600 = 3.41 (000Dh 4Ah )
//  //* An external watch crystal is required on XIN XOUT for ACLK *//       
//
//               MSP430F149
//            -----------------
//        /|\|              XIN|-
//         | |                 | 32kHz
//         --|RST          XOUT|-
//           |                 |
//           |             P3.4|----------->
//           |                 | 9600 - 8N1
//           |             P3.5|<-----------
//
//  M. Buccini
//  Texas Instruments Inc.
//  Feb 2005
//  Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************

#include  

static char string1[8];

char i;
char j = 0;

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD

  ME1 |= UTXE0 + URXE0;                     // Enabled USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character, SWRST=1
  UTCTL0 |= SSEL0;                          // UCLK = ACLK
  UBR00 = 0x03;                             // 9600 from 1Mhz
  UBR10 = 0x00;                             //
  UMCTL0 = 0x4A;                            // Modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0 + UTXIE0;                   // Enable USART0 RX/TX interrupt
  IFG1 &= ~UTXIFG0;                         // Clear inital flag on POR

  _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3 w/ interrupt
}

// UART0 TX ISR
#pragma vector=UART0TX_VECTOR
__interrupt void usart0_tx (void)
{
  if (i < sizeof string1)
{
    while (!(IFG1 & UTXIFG0));
    TXBUF0 = string1[i++];
  }
}

// UART0 RX ISR
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  string1[j++] = RXBUF0;
  if (j > sizeof string1-1)
  {
    i = 0;
    j = 0;
    TXBUF0 = string1[i++];
  }
}



最新回复

P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD     不是4,5脚吗  详情 回复 发表于 2016-8-5 22:15
 
点赞 关注(1)

回复
举报

60

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
各路大神在哪……
在线等
 
 

回复

384

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
把主函数类型改成int型试试不用在函数结尾加return 0;这一句直接把void main()改成int main()然后再编译试试。。。。

点评

不行啊,还是没办法接收……  详情 回复 发表于 2015-7-16 18:11
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

4
 
楼主为何要加那句查询,不是已经用发送中断了么???

点评

用中断的话就不用加查询了么? 可是加了应该也能正常工作啊  详情 回复 发表于 2015-7-16 18:12
用中断的话就不用加查询了么? 可是加了应该也能正常工作啊  详情 回复 发表于 2015-7-16 18:11
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

5
 
dragongtr 发表于 2015-7-16 15:42
把主函数类型改成int型试试不用在函数结尾加return 0;这一句直接把void main()改成int main()然后再编译 ...

不行啊,还是没办法接收……
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

6
 
数码小叶 发表于 2015-7-16 15:49
楼主为何要加那句查询,不是已经用发送中断了么???

用中断的话就不用加查询了么?
可是加了应该也能正常工作啊
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

7
 
数码小叶 发表于 2015-7-16 15:49
楼主为何要加那句查询,不是已经用发送中断了么???

用中断的话就不用加查询了么?
可是加了应该也能正常工作啊

点评

中断模式下 UTXIFG0是不是被硬件自动清零了,你去看下数据手册,懒得下149的了  详情 回复 发表于 2015-7-16 19:13
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

8
 
zhangxiajoa 发表于 2015-7-16 18:12
用中断的话就不用加查询了么?
可是加了应该也能正常工作啊

中断模式下 UTXIFG0是不是被硬件自动清零了,你去看下数据手册,懒得下149的了

点评

大神~十分感谢,找了下手册: 果然中断一被响应,标志位就自动复位了。我手头上的书上也写了……看书不认真。。。不过USART模块确实有好多寄存器,我都分不清了。。。。  详情 回复 发表于 2015-7-16 20:40
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

9
 
数码小叶 发表于 2015-7-16 19:13
中断模式下 UTXIFG0是不是被硬件自动清零了,你去看下数据手册,懒得下149的了

大神~十分感谢,找了下手册:  果然中断一被响应,标志位就自动复位了。我手头上的书上也写了……看书不认真。。。不过USART模块确实有好多寄存器,我都分不清了。。。。

点评

呵呵。。。。430寄存器多是很正常的,不要直接去看寄存器,去看模块图,这样就简单多了  详情 回复 发表于 2015-7-17 08:06
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

10
 
我看了下你的头文件,你的开头注释,你使用的是msp430f149,我最近也要用这个单片机,我以前用的g2553,我有几个问题想问一下,你使用什么开发环境,用什么下载程序的,我这只有个裸的单片机,不知从何下手

点评

用的IAR软件。通过USB-IF接口,直接下载代码。 你用的是那个launchpad么?  详情 回复 发表于 2015-7-17 10:50
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

11
 
zhangxiajoa 发表于 2015-7-16 20:40
大神~十分感谢,找了下手册:  果然中断一被响应,标志位就自动复位了。我手头上的书上也写了……看书不 ...

呵呵。。。。430寄存器多是很正常的,不要直接去看寄存器,去看模块图,这样就简单多了

点评

恩呢,受教了  详情 回复 发表于 2015-7-17 10:51
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

12
 
ywlzh 发表于 2015-7-16 21:22
我看了下你的头文件,你的开头注释,你使用的是msp430f149,我最近也要用这个单片机,我以前用的g2553,我有 ...

用的IAR软件。通过USB-IF接口,直接下载代码。
你用的是那个launchpad么?

点评

恩恩 不过最近转向149,g2553一个矩阵按键与12864就没有什么引脚了,哎  详情 回复 发表于 2015-7-17 11:28
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

13
 
数码小叶 发表于 2015-7-17 08:06
呵呵。。。。430寄存器多是很正常的,不要直接去看寄存器,去看模块图,这样就简单多了

恩呢,受教了
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

14
 
zhangxiajoa 发表于 2015-7-17 10:50
用的IAR软件。通过USB-IF接口,直接下载代码。
你用的是那个launchpad么?

恩恩 不过最近转向149,g2553一个矩阵按键与12864就没有什么引脚了,哎

点评

试过MSP430G2553IPW28没?  详情 回复 发表于 2015-7-18 19:12
是啊,我用的的f1611,基本上各种模块都能满足  详情 回复 发表于 2015-7-18 08:59
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

15
 
ywlzh 发表于 2015-7-17 11:28
恩恩 不过最近转向149,g2553一个矩阵按键与12864就没有什么引脚了,哎

是啊,我用的的f1611,基本上各种模块都能满足
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

16
 
ywlzh 发表于 2015-7-17 11:28
恩恩 不过最近转向149,g2553一个矩阵按键与12864就没有什么引脚了,哎

试过MSP430G2553IPW28没?

点评

这个没试过  详情 回复 发表于 2015-7-18 20:08
 
 
 

回复

1234

帖子

4

TA的资源

纯净的硅(高级)

17
 
qiushenghua 发表于 2015-7-18 19:12
试过MSP430G2553IPW28没?

这个没试过
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 
P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD     不是4,5脚吗

点评

是啊……怎么了  详情 回复 发表于 2016-9-16 22:58
 
 
 

回复

60

帖子

1

TA的资源

一粒金砂(中级)

19
 
南方元 发表于 2016-8-5 22:15
P3SEL = 0x30;                             // P3.3,4 = USART0 TXD/RXD     不是4,5脚吗

是啊……怎么了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表