发表于 2014-11-21 09:16:12

中断中为什么要加延时啊?中断中不要有太多的处理,简单发送或者接收,在外部对这些数据缓冲区进行处理。

snyanglq 发表于 2014-11-21 13:38:34

那片清茶 发表于 2014-11-21 08:51
你用查询发送,中断接收试试。。。

也试过,还是不行

snyanglq 发表于 2014-11-21 13:41:19

安 发表于 2014-11-21 09:16
中断中为什么要加延时啊?中断中不要有太多的处理,简单发送或者接收,在外部对这些数据缓冲区进行处理。 ...

这个不碍事,主要是不加延时会丢包

发表于 2014-11-21 14:04:07

怎么会丢包呢?正常收发是不会发生该问题的.

小贾-370388 发表于 2014-11-29 12:00:53

你怎么知道一定是接收到了命令的 第一个字节的0xf5啊 ,你的命令最后一个字节也是0XF5啊,会不会是你的接收缓存被冲掉了,只剩下了最后一个受到的数啊 ,a变量时不是有问题?看看定义位置,还有事不是别处也调用了

starlyc 发表于 2014-11-29 12:36:32

先调低发送速度看一下。

snyanglq 发表于 2014-12-3 16:45:30

安 发表于 2014-11-21 14:04
怎么会丢包呢?正常收发是不会发生该问题的.

你可以试试,就跟串口调试助手不加延时都会丢包,不过还是谢谢你,参考了你的意见,我把最后的一次延时去掉就可以,:)

snyanglq 发表于 2014-12-3 16:49:07

小贾-370388 发表于 2014-11-29 12:00
你怎么知道一定是接收到了命令的 第一个字节的0xf5啊 ,你的命令最后一个字节也是0XF5啊,会不会是你的接收 ...

谢谢你的回答,这个值我仿真看到的,不关a的事,如果a的问题,我跟串口调试助手时调试也不行啊,不过问题找到了,只要将最后一次延时去掉就可以

发表于 2014-12-4 11:23:09

中断中收到数据就放到缓冲区,另外注意看一下接收溢出标志位,是不是发生溢出,没有及时清掉溢出标志位。

snyanglq 发表于 2015-1-27 13:48:23

安 发表于 2014-12-4 11:23
中断中收到数据就放到缓冲区,另外注意看一下接收溢出标志位,是不是发生溢出,没有及时清掉溢出标志位。 ...

谢谢你,这个溢出清除后来调试为了保稳也加上了,现在问题解决了:)
页: 1 [2] 3
查看完整版本: STM32F051使用串口中断接收只能接收到第一位数据,后面的...