打印
[MSP430]

msp430串口通信

[复制链接]
1526|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cjl519|  楼主 | 2013-9-5 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
msp430串口通信#include  <msp430x14x.h>
#define TXBUF_SIZE 32                      /*一帧最多能发送的数据字节数*/
unsigned char TX_BUFF[TXBUF_SIZE];         /*发送缓冲区*/
unsigned char TX_NUM=0;                      /*发送字节总数变量*/
unsigned char TX_CNT=0;                      /*发送字节计数变量*/
unsigned char i;
static unsigned char string[]={0x01,0x02,0x03,0x04,0x05,0x06};
void UART_init()
{
P3SEL|=BIT4+BIT5;
ME1 |= UTXE0 + URXE0;                     //开启收发模式
UCTL0 |= CHAR;                            //8位数据传输
UTCTL0 |= SSEL0;                          // UCLK= SMCLK
UBR00 =0x03;                              
UBR10 = 0x00;                           
UMCTL0 =0x4A;                             
UCTL0 &= ~SWRST;
}
char UART0_PutChar(unsigned char *Chr,unsigned int Length)
{
int i;
if(IE1&UTXIE0)
   return(0);
if(Length>TXBUF_SIZE)
   return(0);
for(i=0;i<Length;i++)
{
  TX_BUFF=Chr;
}
TX_CNT=0;
TX_NUM=Length;
IFG1|=UTXIFG0;
IE1|=UTXIE0;
return(1);  
}

void main()
{
WDTCTL = WDTPW + WDTHOLD;  
UART_init();
_EINT();
while(1)
{
   for(i=0;i<6;i++)
   {
   UART0_PutChar(string,7);
   }
}
}

#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX(void)
{
TXBUF0=TX_BUFF[TX_CNT];
TX_CNT++;


if(TX_CNT>=TX_NUM)
{
  IE1&=~UTXIE0;
}
}
这是用FIFO进行数据输出的一个程序我认为应该的输出是01 02 03 04 05 06 01 02 03 04 05 06 ......而实际上的输出确是06 06 05 05 05 05 04 04 03 03 03 02 02 01 01 06 06 05 05 04 04 04 03 03 03 02 02 01 01......感觉输出方向反了,而且一个数输出多次。我找了好久都没找到原因,还请大家帮忙看看,谢谢了

相关帖子

沙发
cjl519|  楼主 | 2013-9-10 23:00 | 只看该作者
人工置顶

使用特权

评论回复
板凳
ar_m_cu| | 2014-1-15 09:02 | 只看该作者
发送数据的时候,一定要等发送缓冲区空之后再发送

使用特权

评论回复
地板
zh26811478115| | 2014-2-26 10:53 | 只看该作者
清空缓存在发送

使用特权

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

本版积分规则

17

主题

26

帖子

0

粉丝