调试msp30uart记录

来源:互联网 发布:立方米网络建站收费 编辑:程序博客网 时间:2024/06/08 09:40

环境:windows xp,ccs5.4

使用Ti官方的uart串口程序

#include <msp430.h>


int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  if (CALBC1_1MHZ==0xFF) // If calibration constant erased
  {
    while(1);                               // do not load, trap CPU!!
  } 
  DCOCTL = 0;                               // Select lowest DCOx and MODx settings
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
  P3SEL = 0x30;                             // P3.4,5 = USCI_A0 TXD/RXD
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK
  UCA0BR0 = 52;                             // 1MHz 19200我设置了一个8M赫兹的一个值,所以这里需要查看用户定义中的一张表格来确定
  UCA0BR1 = 0;                              // 1MHz 19200这个同上
  UCA0MCTL = UCBRS0;                        // Modulation UCBRSx = 1设置的一个分频系数,不太清楚怎么配置,好像换成8M以后还可以用的
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}

//串口中断,有数据读取到时发生一个中断。。。。实例这边将受到的数据直接发送出去。当然可以可以做一个缓存,把收到的数据保存,然后出来
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2 & UCA0TXIFG));              // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
}

遇到的一个问题:

使用串口助手调试的时候,发现有数据,但是数据完全错误。后来单独盘查,寄存器配置,串口线,与串口调试软件,均没有发现问题。后来把msp430烧写程序的烧录器拔掉好像就好了,可能是端口冲突!

------------------------------------------------2014.12.18


0 0
原创粉丝点击