搜索
bottom↓
回复: 18

新人求mps430f5438A UART程序问题

[复制链接]

出0入0汤圆

发表于 2014-8-9 10:14:02 | 显示全部楼层 |阅读模式
用TI的例程跑一个uart数据回收的一个程序,感觉TI中只分频(不知道此处是否理解错误)就加了一个时钟设置,可是用串口调试软件测试时,收到的都是乱码,波特率按照程序应该是9600,我也设置对了的,就是跑不对。之前自己没加那个时钟设置时,收到的依然是乱码,现在凌乱了,新手不懂啊,求各位大大指导! 或者各位大大有正确的程序可以给我一下,让我学习一下吗

#include "msp430x54x.h"
#define  FLL_FACTOR     549  
void Init_CLK(void)
{
  WDTCTL     = WDTPW + WDTHOLD                            ; // 关看门狗
  P7SEL     |= 0x03                                       ; // 端口选择外部低频晶振XT1
  UCSCTL6   &=~XT1OFF                                     ; // 使能外部晶振
  UCSCTL6   |= XCAP_3                                     ; // 设置内部负载电容,选择的是标准的12pf
  UCSCTL3   |= SELREF_2                                   ; // DCOref = REFO,选择REFOCLK为默认时钟源
  UCSCTL4   |= SELA_0                                     ; // ACLK   = XT1  XT1作为辅助时钟源
  __bis_SR_register(SCG0)                                 ; // 关闭FLL控制回路,内部函数,对状态寄存器里SCGO位置1
  UCSCTL0    = 0x0000                                     ; // 设置DCOx, MODx
  UCSCTL1    = DCORSEL_7                                  ; // 设置DCO振荡范围
  UCSCTL2    = FLLD__1 + FLL_FACTOR                       ; // ?Fdco = ( FLL_FACTOR + 1)×FLLRef = (649 + 1) * 32768 = 21.2992MHz
  __bic_SR_register(SCG0)                                 ; // 打开FLL控制回路 ,对SCGO位置0                                                      
  __delay_cycles(1024000)                                 ;
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志                                                            
    SFRIFG1 &= ~OFIFG                                     ;
  }while(SFRIFG1&OFIFG)                                   ; // 检测振荡器错误标志,当OFIFG=1时,有错误,进入循环,清除错误标志
}

void main(void)
{
  
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  Init_CLK( );
  _EINT() ;
  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  P3OUT |= 0x10;
  UCA0CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA0CTL1 |= UCSSEL_1;                     // ACLK
  UCA0BR0 = 0x03;                              
  UCA0BR1 = 0x00;                             
UCA0MCTL = UCBRS_3 + UCBRF_0 ;   
                                          
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA0IE |= UCRXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(GIE);        // interrupts enabled
   //   __no_operation();                       // For debugger
      while(1);
}

// 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;
  }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2014-8-9 10:33:39 | 显示全部楼层

出140入115汤圆

发表于 2014-8-9 10:51:40 | 显示全部楼层
本帖最后由 yanyanyan168 于 2014-8-9 10:54 编辑




文件名:MSP430计算波特率调制码(自动化老沈)

这是一个EXCEL计算文件,楼主对照下看看自己设置对没有

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-8-9 11:10:46 | 显示全部楼层
yanyanyan168 发表于 2014-8-9 10:51
文件名:MSP430计算波特率调制码(自动化老沈)

这是一个EXCEL计算文件,楼主对照下看看自己设置对没有{: ...

谢谢,这个是所有MSP430都通用的吗

出140入115汤圆

发表于 2014-8-9 11:16:49 | 显示全部楼层
jasminee 发表于 2014-8-9 11:10
谢谢,这个是所有MSP430都通用的吗

实事求是,这个不清楚,但是我试过好几款都对。
楼主试试便知。

出0入0汤圆

 楼主| 发表于 2014-8-9 11:25:52 | 显示全部楼层
yanyanyan168 发表于 2014-8-9 11:16
实事求是,这个不清楚,但是我试过好几款都对。
楼主试试便知。

谢谢

出0入0汤圆

发表于 2014-8-9 11:51:55 | 显示全部楼层
  1. UCA0BR0 = 0x03;                              
  2. UCA0BR1 = 0x00;
复制代码

这两个是计算波特率啊,你要根据你的现在的时钟,然后根据公式去计算波特率的,不然就是乱码。你都没看过编程手册吗?上面讲得很清楚的。

出0入0汤圆

发表于 2014-8-9 12:05:59 | 显示全部楼层
5438a有个库的
  1. //Initialize USCI UART
  2.   if ( STATUS_FAIL == USCI_A_UART_initAdvance(USCI_A1_BASE,
  3.            USCI_A_UART_CLOCKSOURCE_SMCLK,
  4.            9600,
  5.            USCI_A_UART_NO_PARITY,
  6.            USCI_A_UART_LSB_FIRST,
  7.            USCI_A_UART_ONE_STOP_BIT,
  8.            USCI_A_UART_MODE,
  9.            USCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION
  10.            )){
  11.       return;
  12.   }
复制代码


这样就可以了

出0入0汤圆

 楼主| 发表于 2014-8-9 16:22:29 | 显示全部楼层
nongxiaoming 发表于 2014-8-9 11:51
这两个是计算波特率啊,你要根据你的现在的时钟,然后根据公式去计算波特率的,不然就是乱码。你都没看过 ...

//RS232TX_PROC(void): RS232端口发送程序                              

void RS232TX_PROC(char *tx_buf)
{
  unsigned char i,length                                           ;
  length = strlen(tx_buf)                                          ;
  for(i=0;i<length;i++)
  {
    UCA3TXBUF = *tx_buf++                                          ;
    while (!(UCA3IFG&UCTXIFG))                                     ;
  }
}
我用我上面那个设置,用这种函数传,就收的到啊,可是自己输入再想回显就不行,为什么啊

出0入0汤圆

 楼主| 发表于 2014-8-9 16:25:35 | 显示全部楼层

这个是在哪个库函数里的啊?能给我说下库函数名吗,我搜索了没搜到呀。。。

出0入0汤圆

发表于 2014-8-9 18:57:02 来自手机 | 显示全部楼层
jasminee 发表于 2014-8-9 11:10
谢谢,这个是所有MSP430都通用的吗

用于5438肯定没问题。

出0入0汤圆

发表于 2014-8-9 19:01:31 来自手机 | 显示全部楼层
ti有提供完整的主要功能测试程序,当然包括uart.官网搜到5438的页面有下载link.

出0入0汤圆

发表于 2014-8-9 20:16:36 | 显示全部楼层
我都忘记从哪找来的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-8-9 20:38:36 | 显示全部楼层
divineliu 发表于 2014-8-9 19:01
ti有提供完整的主要功能测试程序,当然包括uart.官网搜到5438的页面有下载link. ...

我就是在TI网上下的例程可是传不对

出0入0汤圆

 楼主| 发表于 2014-8-13 19:24:24 | 显示全部楼层
再顶几下,我现在查看了我的代码还是没问题啊,望哪位高人帮我看看啊

出0入0汤圆

 楼主| 发表于 2014-8-13 19:24:47 | 显示全部楼层
再顶一下

出0入14汤圆

发表于 2014-8-13 23:54:31 来自手机 | 显示全部楼层
要是记得我明天看下吧,你可以看我的帖子,这个刚调

出0入0汤圆

发表于 2014-9-9 12:06:39 | 显示全部楼层
谢谢分享。

出0入0汤圆

发表于 2014-9-13 10:41:08 | 显示全部楼层
楼主问题解决没有?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 14:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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