打印

MSP430串口发送丢失字节

[复制链接]
1837|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kafeng|  楼主 | 2015-10-24 11:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kafeng 于 2015-10-24 11:19 编辑

用以下配置和程序发送字符串总会有随机丢失字节的情况,求大神指教。

void Init_usart0(void)
{
    P3SEL |= BIT4 + BIT5;  //选择P3^4和P3^5引脚为外围模块功能

    U0CTL=(PENA&0x00) | (PEV&0x00) | (SPB&0x00) | (CHAR&0xff) | (SYNC&0x00)| (MM&0x00);
    //效验禁止,1位停止位,字符长度,8位,USART模块的模式选择,选择UART模式(异步)   

    U0TCTL=(CKPL&0x00) | (SSEL1&0xff) | (URXSE&0x00) | (TXWAKE&0x00) | (TXEPT&0x00);
    //时钟极性控制位,UCLKI信号与UCLK信号极性相同,确定波特率发生器的时钟源为SMCLK(即为1MHz)

    U0BR0=0x68;
    U0BR1=0x00;
    U0MCTL=0x88;   
   
    U0CTL&=~SWRST;

    ME1|=(UTXE0&0xff) | (URXE0&0xff);   //USART0发送允许,USART0接收允许
    IE1|=(UTXIE0&0xff) | (URXIE0&0xff);  //USART0发送中断使能,USART0接收中断使能
    IFG1 &=0x7f;       //清0发送中断标志位
}


/*指针指向要发送的字符串,及要发送的数据长度*/
void Sent_Uart0(unsigned char *p,unsigned char length)        //USART0串口发送函数
{
        TX0_pointer = p;         //指针指向要发送的内容数组
        TX0_length = length;      //定义要发送的数据长度      

        IFG1|=UTXIFG0;   //发送中断置位
         
        while( TX0_complete_flag ==0);//等待所有发送完成

        while((U0TCTL&TXEPT)==0);  //判断当前数据是否发送完成
        IFG1&=~UTXIFG0;   //清除中断标志
        TX0_complete_flag =0;  //清除发送完成标志位        
}


#pragma vector=UART0TX_VECTOR          //USART0串口发送中断
__interrupt void usart0_tx(void)
{      
      if(TX0_length)
      {               
          U0TXBUF=*(TX0_pointer++);
          while (!(IFG1&UTXIFG0)); // 判断:发送是否完成
      }
       TX0_length --;                           
      if(TX0_length==0)
      {         
          TX0_complete_flag =1;  //所有字节发送完成
      }
                  
}





相关帖子

沙发
dirtwillfly| | 2015-10-24 17:51 | 只看该作者
void Sent_Uart0(unsigned char *p,unsigned char length)   
这个函数是在主程序里?
估计经常会被串口中断打断

使用特权

评论回复
板凳
kafeng|  楼主 | 2015-10-26 11:43 | 只看该作者
自己再顶一个~~

使用特权

评论回复
地板
comeon201208| | 2015-10-26 22:32 | 只看该作者
这个选用的波特率也是很关键的。

使用特权

评论回复
5
kafeng|  楼主 | 2015-10-27 14:58 | 只看该作者
本帖最后由 kafeng 于 2015-10-27 15:07 编辑
dirtwillfly 发表于 2015-10-24 17:51
void Sent_Uart0(unsigned char *p,unsigned char length)   
这个函数是在主程序里?
估计经常会被串口中 ...

好吧,交友不慎,用了一个稀烂的串口助手,换了这个就好了。测试了50k字节,再没出过稀奇古怪的问题。

然后这两句也可以删除了。

感谢大家的关注,结贴给分啦~



使用特权

评论回复
6
dirtwillfly| | 2015-10-27 15:31 | 只看该作者
kafeng 发表于 2015-10-27 14:58
好吧,交友不慎,用了一个稀烂的串口助手,换了这个就好了。测试了50k字节,再没出过稀奇古怪的问题。

然 ...

使用特权

评论回复
7
xiaoyaozt| | 2015-10-27 21:59 | 只看该作者
发的太多了。

使用特权

评论回复
8
风吹小浪| | 2015-10-28 16:27 | 只看该作者
原来是串口软件的问题,我一般用STC-ISP的下载软件。

使用特权

评论回复
9
旧影子| | 2015-10-29 16:00 | 只看该作者
你这串口助手,一看就很山寨

使用特权

评论回复
10
旧影子| | 2015-10-29 16:10 | 只看该作者
推荐用匠人的串口猎人

使用特权

评论回复
11
陌小生| | 2015-10-30 23:20 | 只看该作者
kafeng 发表于 2015-10-27 14:58
好吧,交友不慎,用了一个稀烂的串口助手,换了这个就好了。测试了50k字节,再没出过稀奇古怪的问题。

然 ...

理论上,不应该串口助手影响的

使用特权

评论回复
12
youtome| | 2015-10-31 11:07 | 只看该作者
看看链接的共地问题。

使用特权

评论回复
13
youtome| | 2015-10-31 11:08 | 只看该作者
或者串口软件是不是可以接受这么多。

使用特权

评论回复
14
zhuotuzi| | 2015-10-31 22:49 | 只看该作者
上位机软件不行,推荐,串口猎人

使用特权

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

本版积分规则

7

主题

54

帖子

3

粉丝