[Kinetis] UART连续接收字符

[复制链接]
2382|11
 楼主| 603133791 发表于 2015-11-20 18:33 | 显示全部楼层 |阅读模式
本帖最后由 603133791 于 2015-11-20 18:35 编辑

使用的是MK60DN512VLL10

while(1)
    {
      if(uart_getchar_present(UART3_BASE_PTR)){
        while(1){
          tmp = uart_getchar(UART3_BASE_PTR);
          if(tmp != '\0')
            uart_putchar(UART3_BASE_PTR, tmp);
          else
            break;
        }
      }
      delay();
}

我在while加了delay,延时1s左右。进行连续字符接收。会出现如下情况: QQ截图20151120183258.jpg
连续发多个字符,第一次返回只有一个字符,后面就会正常。
舒斯特尔 发表于 2015-11-20 22:06 | 显示全部楼层
这个真的很奇怪啊,没有遇到过呢
西门扫雪 发表于 2015-11-21 17:41 | 显示全部楼层
发送和接收这么写感觉怪怪
FSL_TICS_ZJJ 发表于 2015-11-23 10:45 | 显示全部楼层
你如果不加这句:
if(uart_getchar_present(UART3_BASE_PTR)){
结果是否正常?
IversonCar 发表于 2015-11-23 17:04 | 显示全部楼层
这个很奇怪,每次都这样吗
跟屁虫 发表于 2015-11-23 20:41 | 显示全部楼层
你那if语句有什么用呢?
 楼主| 603133791 发表于 2015-11-24 10:19 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-11-23 10:45
你如果不加这句:
if(uart_getchar_present(UART3_BASE_PTR)){
结果是否正常?

去掉了确实正常了。
/********************************************************************/
/*
* Check to see if a character has been received
*
* Parameters:
*  channel      UART channel to check for a character
*
* Return values:
*  0       No character received
*  1       Character has been received
*/
int uart_getchar_present (UART_MemMapPtr channel)
{
    return (UART_S1_REG(channel) & UART_S1_RDRF_MASK);
}
/********************************************************************/

按说明,这个函数是检测是否有接收字符的,我这样有问题?
 楼主| 603133791 发表于 2015-11-24 10:20 | 显示全部楼层
跟屁虫 发表于 2015-11-23 20:41
你那if语句有什么用呢?

if(uart_getchar_present(UART3_BASE_PTR)){
这一句吗?

用来检测是否有接收到字符。
FSL_TICS_ZJJ 发表于 2015-11-24 13:34 | 显示全部楼层
603133791 发表于 2015-11-24 10:20
if(uart_getchar_present(UART3_BASE_PTR)){
这一句吗?

我认为,就算你要判断,也是用while在那里等,而不是if,因为如果你再执行其他的语句的时候,已经接受到了数据,你再判断,可能就有问题了。
DreamofOven 发表于 2015-11-24 17:07 | 显示全部楼层
是不是收和发都是查询容易丢数啊
ccw1986 发表于 2015-11-24 19:58 | 显示全部楼层
原来是语句写的有问题
跟屁虫 发表于 2015-11-26 15:42 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-11-24 13:34
我认为,就算你要判断,也是用while在那里等,而不是if,因为如果你再执行其他的语句的时候,已经接受到 ...

同意,要么就用中断的方式来写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部