OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5705|回复: 2

MSP430F5529通过串口发送字符无法进入中断

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-4-30
在线时间
0 小时
发表于 2014-9-21 16:02:51 | 显示全部楼层 |阅读模式
5金钱
  我用的是官方的例程,通过串口向单片机发送数据,然后单片机再将接收到的数据发回来。
代码如下:
#include <msp430.h>

int main(void)
{
  unsigned char i;

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  P3SEL = BIT3+BIT4;                        // P3.4,5 = USCI_A0 TXD/RXD
//.......................
//  5SEL |= BIT4+BIT5;                       // Select XT1
//
//  UCSCTL6 &= ~(XT1OFF);                     // XT1 On
//  UCSCTL6 |= XCAP_3;                        // Internal load cap
//  UCSCTL3 = 0;                              // FLL Reference Clock = XT1
//
//  // Loop until XT1,XT2 & DCO stabilizes - In this case loop until XT1 and DCo settle
//  do
//  {
//    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
//                                            // Clear XT2,XT1,DCO fault flags
//    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
//  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
//  
//  UCSCTL6 &= ~(XT1DRIVE_3);                 // Xtal is now stable, reduce drive strength
//
//  UCSCTL4 |= SELA_0 + SELS_4 + SELM_4;      // ACLK = LFTX1
//                                            // SMCLK = default DCO
//                                            // MCLK = default DCO
//  
  //................
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA0BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  __no_operation();                         // For debugger
}

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
  switch(__even_in_range(UCA0IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA0IFG&UCTXIFG));             // USCI_A0 TX buffer ready?
    UCA0TXBUF = UCA0RXBUF;                  // TX -> RXed character
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break;  
  }
}

我单独写一个单片机向串口发送数据的程序,串口可以接收。但就是我向单片机发送数据并没有进入中断,也没有数据发回来。求大神解答。给我一个现成的程序,单片机串口接收数据的也行。
也不知道有没有可能是接受数据的引脚坏了。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

468

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1660
金钱
1660
注册时间
2014-2-25
在线时间
224 小时
发表于 2014-9-21 21:22:48 | 显示全部楼层
很有可能是RX的引脚坏了,我们之前用430的时候也出现过几回RX引脚坏了的情况,只能发送,不能接收。。。、
你手头上还有5529不,试一下行不行?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2014-4-30
在线时间
0 小时
 楼主| 发表于 2014-9-23 16:02:54 | 显示全部楼层
回复【2楼】1201yuge:
---------------------------------
刚买的一块,试了还是不行。不知道怎么回事。我用的是CCS5.5
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-24 06:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表