c语言写的 串口通信中设置停止位是什么意思,为什么还会有多种情况?谢谢

智能硬件 2016-10-09 04:05:14
具体程序如下,我有点看不懂。谢谢~~

/* 设置停止位*/
switch (stopbits)
{
case 1:
options.c_cflag &= ~CSTOPB;
break;
case 2:
options.c_cflag |= CSTOPB;
break;
default:
fprintf(stderr,"Unsupported stop bits\n");
return (FALSE);
}
...全文
1697 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
of123 2016-10-10
  • 打赏
  • 举报
回复
呵呵,缺省状态表示的是非法值,所以才打印 Warning,返回错误。
maxwell11 2016-10-10
  • 打赏
  • 举报
回复
串口通信首先是设置波特率,由此决定每位数据在线上维持的时间。 以一个单位时间表示传输1bit所需要的时间。 1位停止位表示 停止信号在线上维持一个单位时间。 2位停止位表示 停止信号在线上维持两个单位时间。 默认表示 没有停止信号。 停止位表示一次数据发送的结束(通常是8BIT 表示一次发送)
of123 2016-10-09
  • 打赏
  • 举报
回复
要看寄存器中这一位的定义。 从代码看,标志为 1 时,清除此位(CSTOPB 位 = 0);标志为 2 时,置位此位(CSTOPB 位 = 1)。 猜想,此位控制是否使用 2 个停止位。 各种协议帧格式定义较为复杂,有些模式下是要求 2 个停止位的。

1,616

社区成员

发帖
与我相关
我的任务
社区描述
智能硬件,智能手表,可穿戴设备,智能电视,谷歌眼镜,Google Glass 相关讨论。
社区管理员
  • 智能硬件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧