打印
[MSP430]

各位高手帮忙看看430串口程序是不是有问题啊

[复制链接]
3198|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
浅唱246|  楼主 | 2014-1-9 13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 浅唱246 于 2014-1-14 20:57 编辑

把程序写进去后,用串口调试助手发送数,只有发送,没有接收,请各位高手帮忙看看。新手,希望大家多多帮忙啊。十分感谢大家啦
#include <msp430f4783.h>
void main(void)
{
    unsigned char i;
    P4SEL |= BIT0;                            //设置P4.0为UART1的TXD
    P4SEL |= BIT1;                              //设置P4.1为UART1的RXD
    P4DIR |= BIT0;                              //P4.0为输出管脚
    WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
    FLL_CTL0 |= XCAP11PF;                     // Configure load caps
  do
    {
      IFG1 &= ~OFIFG;                         // Clear OSCFault flag
      for (i = 0xff; i > 0; i--);             // Time for flag to set
    }
     while ((IFG1 & OFIFG));                   // OSCFault flag still set?
     UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK
     UCA1BR0 = 0x03;                           // 32k/9600 - 3.41
     UCA1BR1 = 0x00;                           //
     UCA1MCTL = 0x06;                          // Modulation
     UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    // ME2 |= UCA1TXIE+ UCA1RXIE;              //使能UART1的TXD和RXD
     IE2 |= UCA1RXIE;                               //使能UART1的RX中断
     IE2 |= UCA1TXIE;                               //使能UART1的TX中断
     _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0, interrupts enabled
}
//  Echo back RXed character, confirm TX buffer is ready first
  #pragma vector=USCIAB1RX_VECTOR
  __interrupt void USCIA1RX_ISR (void)
  {
      while(!(IFG2&UCA1TXIFG));
      UCA1TXBUF = UCA1RXBUF;                    // TX -> RXed character
  }

相关帖子

沙发
airwill| | 2014-1-9 13:46 | 只看该作者
程序不长, 应该不麻烦, 最好找个仿真器, 定心地调试.

使用特权

评论回复
板凳
浅唱246|  楼主 | 2014-1-9 14:03 | 只看该作者
airwill 发表于 2014-1-9 13:46
程序不长, 应该不麻烦, 最好找个仿真器, 定心地调试.

没有留仿真接口,只留了一个BSL接口

使用特权

评论回复
地板
airwill| | 2014-1-9 14:13 | 只看该作者
怎么经常碰到这样的兄弟, 这下要为你当初 自大的去掉仿真接口买单了.

使用特权

评论回复
5
浅唱246|  楼主 | 2014-1-9 14:16 | 只看该作者
airwill 发表于 2014-1-9 14:13
怎么经常碰到这样的兄弟, 这下要为你当初 自大的去掉仿真接口买单了.

现在也尝到苦头了,希望高手们帮帮忙啊

使用特权

评论回复
6
dongqiwen| | 2014-1-9 14:29 | 只看该作者
和程序没关系,查查硬件吧。

使用特权

评论回复
7
浅唱246|  楼主 | 2014-1-9 14:31 | 只看该作者
dongqiwen 发表于 2014-1-9 14:29
和程序没关系,查查硬件吧。

你的意思是程序是对的?

使用特权

评论回复
8
rolland_1987| | 2014-1-9 15:49 | 只看该作者
串口调试工具中将“按十六进制接收”那里不要打钩

使用特权

评论回复
9
tergy2012| | 2014-1-9 16:01 | 只看该作者
看不懂。。。。。

使用特权

评论回复
10
浅唱246|  楼主 | 2014-1-9 16:03 | 只看该作者
rolland_1987 发表于 2014-1-9 15:49
串口调试工具中将“按十六进制接收”那里不要打钩

试了,打钩不打勾都试了不是那个问题。

使用特权

评论回复
11
rolland_1987| | 2014-1-9 16:42 | 只看该作者
浅唱246 发表于 2014-1-9 16:03
试了,打钩不打勾都试了不是那个问题。

先点个灯看能不能进接收中断    还有就是监控软件看串口工具发出来了没

使用特权

评论回复
12
浅唱246|  楼主 | 2014-1-9 17:02 | 只看该作者
rolland_1987 发表于 2014-1-9 16:42
先点个灯看能不能进接收中断    还有就是监控软件看串口工具发出来了没

串口工具没问题

使用特权

评论回复
13
dirtwillfly| | 2014-1-9 22:00 | 只看该作者
没看到使能总中断,估计msp430没有接收到字符

使用特权

评论回复
14
liaohongcai8204| | 2014-1-10 11:59 | 只看该作者
  do
    {
      IFG1 &= ~OFIFG;                         // Clear OSCFault flag
      for (i = 0xff; i > 0; i--);             // Time for flag to set
    }
     while ((IFG1 & OFIFG));                   // OSCFault flag still set?
看你这段仿佛是用外部晶振哦!但是你却没有配置外部晶振,估计430根本就没跑起来!

使用特权

评论回复
15
浅唱246|  楼主 | 2014-1-10 13:33 | 只看该作者
liaohongcai8204 发表于 2014-1-10 11:59
do
    {
      IFG1 &= ~OFIFG;                         // Clear OSCFault flag

高手,别的还有什么问题吗

使用特权

评论回复
16
liaohongcai8204| | 2014-1-14 10:35 | 只看该作者
    WDTCTL = WDTPW + WDTHOLD;
    DCOCTL = DCO_CFG + MOD_CFG;
    BCSCTL1 = XT2_CFG + XTS_CFG + DIVA_CFG + RSEL_CFG;
    BCSCTL3 = XT2S_CFG + LFXT1S_CFG + XCAP_CFG;
    do
    {
        IFG1 &= ~OFIFG;                           // Clear OSCFault flag
        for (i = 0xFF; i > 0; i--);               // Time for flag to set
    }
    while ((IFG1 & OFIFG));                   // OSCFault flag still set?

一般外部晶振需要这样配置一下!(以MSP430F2626为例)当然你也可以用内部晶振
  //internal clock 16M HZ  
    BCSCTL1 = CALBC1_16MHZ;
    DCOCTL = CALDCO_16MHZ;

这么多天没上线,不知道你解决了没有!不知道能不能帮上你!

使用特权

评论回复
17
浅唱246|  楼主 | 2014-1-14 20:56 | 只看该作者
liaohongcai8204 发表于 2014-1-14 10:35
WDTCTL = WDTPW + WDTHOLD;
    DCOCTL = DCO_CFG + MOD_CFG;
    BCSCTL1 = XT2_CFG + XTS_CFG + DIVA ...

看不懂,对我来说移植程序很难。不过谢谢你啊

使用特权

评论回复
18
pangencao| | 2014-1-14 22:39 | 只看该作者
没通看程序,但P4SEL |= BIT0; 写法上有些问题,一般如下写:
P4SEL &= BIT0;   如此

使用特权

评论回复
19
dota_yy| | 2014-1-14 22:57 | 只看该作者
如果晶振没问题话,
试着把TXIE关掉看看

使用特权

评论回复
20
浅唱246|  楼主 | 2014-1-15 11:05 | 只看该作者
pangencao 发表于 2014-1-14 22:39
没通看程序,但P4SEL |= BIT0; 写法上有些问题,一般如下写:
P4SEL &= BIT0;   如此
...

官方例程上就是那样写的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

246

帖子

6

粉丝