硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3620|回复: 3
收起左侧

[有问必答] UartSend函数的问题

[复制链接]

1

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2017-3-24 10:57:30 | 显示全部楼层 |阅读模式
UartSend这个函数的形参_usLen的值如果大于串口缓冲区大值,那么是不是就不会跳出下面这个while(1)的循环了?

        while (1)
        {
            uint16_t usCount;
            DISABLE_INT();
            usCount = _pUart->usTxCount;
            ENABLE_INT();
            if (usCount < _pUart->usTxBufSize)
            {
                break;
            }
        }   
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2017-3-24 11:09:59 | 显示全部楼层
发送空中断使能的时候不会,如果一上来就大于,会死在里面,是个bug。
回复

使用道具 举报

1

主题

1

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-3-24 11:45:26 | 显示全部楼层

回 eric2013 的帖子


无标题.jpg
谢谢您的回复,这是我理解的流程,如果按照这个流程的话,只要usLen的值大于缓冲区的值,就会出现跳不出while(1)的循环。不知道我这么理解有没有问题,谢谢您的帮助。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2017-3-24 12:11:18 | 显示全部楼层

回 tianyun69 的帖子

tianyun69:
谢谢您的回复,这是我理解的流程,如果按照这个流程的话,只要usLen的值大于缓冲区的值,就会出现跳不出while(1)的循环。不知道我这么理解有没有问题,谢谢您的帮助。 (2017-03-24 11:45)

使能了发送空中断后,不会死掉的,你再捋捋。因为中断服务程序会更新变量_pUart->usTxCount
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 15:05 , Processed in 0.046449 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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