MSP430F5529调试串口

[复制链接]
5446|38
 楼主| AI_书生 发表于 2015-7-28 11:16 | 显示全部楼层 |阅读模式
下面的程序,我下载到实验板子上面,可是在串口助手里面调不出来啊,求大侠解救~

#include <msp430.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P3SEL = BIT3+BIT4;                        // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK  选择时钟源
  UCA0BR0 = 6;                              // 1MHz 9600 (see User's Guide)
  UCA0BR1 = 0;                              // 1MHz 9600
  UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16;   // Modln UCBRSx=0, UCBRFx=0,
                                            // over sampling
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, 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;
  }
}
 楼主| AI_书生 发表于 2015-7-28 11:21 | 显示全部楼层
自己顶一个,我有用其他程序试了一下,发现无论哪个程序,用串口调试时,接收到的都是05 92 00 00 04 80 FE ED,这是为什么?
 楼主| AI_书生 发表于 2015-7-28 11:37 | 显示全部楼层
难道是我用的串口助手不对吗?
zhangbo1985 发表于 2015-7-28 12:51 | 显示全部楼层
那你这个单片机的主频多大呢?
zhangbo1985 发表于 2015-7-28 12:52 | 显示全部楼层
注意下主频的频率的,不然你配置的是9600的波特率,实际出来的就可能不是的了
 楼主| AI_书生 发表于 2015-7-28 13:05 | 显示全部楼层
型号是MSP430F5529
 楼主| AI_书生 发表于 2015-7-28 13:07 | 显示全部楼层
zhangbo1985 发表于 2015-7-28 12:52
注意下主频的频率的,不然你配置的是9600的波特率,实际出来的就可能不是的了 ...

在哪里找单片机主频频率,有资料吗?给我发一份吧,谢谢了,
军训的茶杯 发表于 2015-7-28 13:10 | 显示全部楼层
主频一般在系统初始化时候做的。还有,先用示波器看看,收到的波形对不对。
专注于嵌入式 发表于 2015-7-28 13:14 | 显示全部楼层
如果你选择的是外部晶振,那你看看外部晶振是多少
 楼主| AI_书生 发表于 2015-7-28 13:29 | 显示全部楼层
应该不是这个问题,这是TI给的例程,不能有错吧!
我的片子是430F5529,选择的例程是:

MSP430F55xx_uscia0_uart_01        USCI_A0, 115200 UART Echo ISR, DCO SMCLK
MSP430F55xx_uscia0_uart_02        USCI_A0, Ultra-Low Pwr UART 2400 Echo ISR, 32kHz ACLK
MSP430F55xx_uscia0_uart_03        USCI_A0, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK
MSP430F55xx_uscia0_uart_04        USCI_A0, 9600 UART, SMCLK, LPM0, Echo with over-sampling

搞笑的是我把控制控制LED的程序下进去,串口调试助手上还是返回那一串字符,还有,这个例程都进不去中断,是板子的问题还是程序的问题,各位大侠,再分析分析。
 楼主| AI_书生 发表于 2015-7-28 13:34 | 显示全部楼层
专注于嵌入式 发表于 2015-7-28 13:14
如果你选择的是外部晶振,那你看看外部晶振是多少

程序仿真的时候,走到 __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
这一步的时候就不走了,卡在这里,这是为什么 呢?
dirtwillfly 发表于 2015-7-28 20:22 | 显示全部楼层
AI_书生 发表于 2015-7-28 13:34
程序仿真的时候,走到 __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
...

在这里进入了低功耗状态
dirtwillfly 发表于 2015-7-28 20:23 | 显示全部楼层
建议先检查你msp430的串口配置和串口助手里设置的是否一致
冰河w 发表于 2015-7-28 23:39 | 显示全部楼层
估计是串口助手里设置的不对
FireRiver9 发表于 2015-7-29 00:00 | 显示全部楼层
我把控制控制LED的程序下进去,串口调试助手上还是返回那一串字符

这就诡异了,换个串口助手试试
冰河w 发表于 2015-7-30 23:04 | 显示全部楼层
主频率是在时钟初始化部分实现的
jshpy 发表于 2015-7-31 09:49 | 显示全部楼层
本帖最后由 jshpy 于 2015-7-31 09:56 编辑

默认上电后UCS不做任何设置的情况下:
ACLK = REFO = 32.768kHz, MCLK = SMCLK = (Default DCO)/2 = (2MHz/2) ~= 1MHz

楼主选用 SMCLK  1MHz  建议波特率做如下设置
UCA0BR1=0x00H
UCA0BR0=0x68H
UCA0MCTL =0x40H

推荐初始化步骤

1.置位 UCSWRST
2 设置 UCSWRST=1,初始化所有的 USCI 寄存器。
3.配置端口。
4.软件清除 UCSWRST。
5.通过 UCRXIE 和/或 UCTXIE 使能中断(可选)


BME超导体 发表于 2017-11-8 16:58 | 显示全部楼层
楼主,我和你遇到了同样的问题,十分费解。不论发什么数都返回那一串
lxivar 发表于 2018-8-25 13:27 | 显示全部楼层
BME超导体 发表于 2017-11-8 16:58
楼主,我和你遇到了同样的问题,十分费解。不论发什么数都返回那一串

看看电路图,默认连接的是UART1的TXD和RXD。。。
kkzz 发表于 2018-9-1 22:47 | 显示全部楼层
一般来说应该不成问题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部