找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15252|回复: 0
收起左侧

调试STM8/stm32串口时发现的问题 一串数据接收只能接收2个字节

[复制链接]
ID:60076 发表于 2014-5-5 13:34 | 显示全部楼层 |阅读模式
描述:串口中断1用来接收到的数据,我是用串口助手发送一个8字节的数据,然后我想查看8个字节是否被单片接收,比如数据是0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08这8个数值,串口中断
  #pragma vector=ITC_IRQ_UART1_RX + 2   
    __interrupt voidUart1RxdInt(void)
    { //此函数内已完成清中断标志
     u8 ret;
    if(UART1_GetFlagStatus(UART1_FLAG_RXNE)!=RESET)
    {
      tmp =UART1_ReceiveData8();
     
  ret=UART_KbdPkgRead(tmp);
if(ret==0)
{
KBD_Flag_RECE=1;
}
    }
    }
我在ret的地方设了个断点,然后每次发送进入中断的时候发现可以停止在那,并且此时接受的数据的确也是0x01,然后有全速运行,接受的数据也是0x02,在全速运行就可能又是0x01或者根本不会停下来,

此时我才知道我犯了一个错误,当发送一串数据时,断点不应该设在中断内,因为cpu在断点停留处,她是不会停下的,也就是那串数据会被错过,如果你发送一个数字,那就不会错过了。
接下来该怎么办呢?
进入中断的函数,比如我的是UART_KbdPkgRead()。进入后可以编写一个小程序,用来判断接受得到数据是否是要发送的,比如if(dat==0x01),if(dat==0x02).这样在他前边设置断点,用来判断这一串数据是否被单片机接收到了。

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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