2395|3

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

UART串行输出的问题 [复制链接]

大致以CCS的官方例程做了一个UART输出的基本程序,可是不知道为什么输出端收到的不是0x00,0xFF,0xAA,0x55,这样一个我预先设定好的循环。用eaglecom看输出的循环是01 00 00 FF AA 55 05 00 这样一个,逐步分析的时候可以看见是string[i]的取值取了0、1、5这些的值,各位前辈能给我指点指点是为什么吗?

程序部分如下:
#include
int  string2[4]={0x00,0xFF,0xAA,0x55};
char string1[8]={'1','2','3','4','5','6','7','8'};
char i;
char j = 0;

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR = 0xFF;                             // All P1.x outputs
  P1OUT = 0;                                // All P1.x reset
  P2DIR = 0xFF;                             // All P2.x outputs
  P2OUT = 0;                                // All P2.x reset
  P1SEL = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 = BIT1 + BIT2 ;                     // P1.1 = RXD, P1.2=TXD
  P3DIR = 0xFF;                             // All P3.x outputs
  P3OUT = 0;                                // All P3.x reset

  UCA0CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA0BR0 = 0x03;                           // 32kHz/9600 = 3.41
  UCA0BR1 = 0x00;                           //
  UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  _EINT();
  for(;;)
   {
   if (i == sizeof string2)
    i=0;
//   __delay_cycles(50);
   IE2 |= UCA0TXIE;                          // Enable USCI_A0 RX interrupt
   }
//  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
}

// USCI A0/B0 Transmit ISR
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCIAB0TX_VECTOR))) USCI0TX_ISR (void)
#else
#error Compiler not supported!
#endif
{
  UCA0TXBUF = string2[i++];                 // TX next character

// if (i == sizeof string2)                  // TX over?
    IE2 &= ~UCA0TXIE;                       // Disable USCI_A0 TX interrupt
}



最新回复

数据类型吧,int是16位的!  详情 回复 发表于 2016-5-26 07:15
 
点赞 关注

回复
举报

16

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用的是什么板子?什么平台的?
 
个人签名创龙DSP开发培训,时间为2016年7月18日,http://51dsp.net/forum.php?mod=viewthread&tid=939
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
zhiwing 发表于 2016-5-25 17:46
用的是什么板子?什么平台的?

已经解决了,用的是在G2上的G2553,问题最后发现是如果把size of换成具体的值之后,就不会有之前的输出问题。谢谢你留心关注我的问题,感激不尽!!
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(中级)

4
 
数据类型吧,int是16位的!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表