你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
双串口连续发送丢字节
[复制链接]
liulei84-273821
提问时间:2011-5-16 17:56 /
小弟初用103RBT6,从论坛下了个例程双串口连续发送的,结果丢字节程序如下 请教:
SystemInit();
USART_Configuration();
USART1_SendString("USART1");
USART2_SendString("USART2");
程序如上,USART2的发送丢掉了首字节,有木有人遇到过?
赞
0
收藏
0
评论
8
分享
发布时间:2011-5-16 17:56
举报
请先
登录
后回复
8个回答
liulei84-273821
回答时间:2011-5-16 17:58:30
a0a.1 0b0c
RE:双串口连续发送丢字节
沙发补充一下,应该不是TC首发送清零问题,因为两个串口一样的程序USART1的配置一样的
赞
0
评论
回复
支持
反对
废鱼
回答时间:2011-5-16 18:04:13
a0a.1 0b0c
RE:双串口连续发送丢字节
不看程序不知道你的问题所在,我猜想几个问题:
1、串口配置有错
2、发送串口时,要等待发送完毕以后,再发送下一个字节内容。
赞
0
评论
回复
支持
反对
liulei84-273821
回答时间:2011-5-18 10:37:57
a0a.1 0b0c
RE:双串口连续发送丢字节
仿真单步执行没有问题,或者在程序里打个断点也没问题,没断点RUN就丢了又,还是没人碰到过么?另USART_SR 在发送第一个字节之前应该是80还是C0呢?我单步执行发现他是80,在初始化SR之后打断点却是C0但都不会出问题。。。
赞
0
评论
回复
支持
反对
liulei84-273821
回答时间:2011-5-18 17:18:21
a0a.1 0b0c
RE:双串口连续发送丢字节
问题已解决,但具体原因说不上来,原来发送之前TC清零是用USART_ClearFlag,导致丢字节。现在改用USART_GetFlagStatus就不会丢了,谁知道咋回事?
赞
0
评论
回复
支持
反对
废鱼
回答时间:2011-5-18 17:58:05
a0a.1 0b0c
RE:双串口连续发送丢字节
发送的时候要先发送数据,然后等待发送完成。不然后面会把前面的内容冲掉。你出现这个问题就是因为后面的内容把前面的冲掉了,解决这个问题发送单个字符可以参考下面代码。
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{
}
赞
0
评论
回复
支持
反对
liulei84-273821
回答时间:2011-5-19 15:36:41
a0a.1 0b0c
RE:双串口连续发送丢字节
程序就是那样的,
void USART1_SendString(uint8_t *str)
{
while(*str!='\0' && *str!='#')
{
USART_SendData(USART1, (uint8_t) *str);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){};
str++;
}
}
赞
0
评论
回复
支持
反对
liulei84-273821
回答时间:2011-5-19 15:39:10
a0a.1 0b0c
RE:双串口连续发送丢字节
问题出在这里
// USART_ClearFlag(USART2, USART_FLAG_TC);//清除发送完成标志,解决第一个字节无法发送的问题
// USART_ClearFlag(USART1, USART_FLAG_TC);//清除发送完成标志,解决第一个字节无法发送的问题
USART_GetFlagStatus(USART1, USART_FLAG_TC);
USART_GetFlagStatus(USART2, USART_FLAG_TC);
被屏蔽掉的是以前的 发送前初始化,也就是导致串口2丢掉首字节的初始化,未屏蔽的是现在能完整发送的初始化。看来我这问题挺偏的啊 版主你没碰见过?
赞
0
评论
回复
支持
反对
liulei84-273821
回答时间:2011-5-19 15:45:05
a0a.1 0b0c
RE:双串口连续发送丢字节
我是看到手册里面有这么句话:推荐软件写0清除TC只在多缓冲器通讯模式下使用。 于是改成现在读写寄存器清零TC的方法的,只是不知道何谓多缓冲器通讯模式
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:双串口连续发送丢字节
RE:双串口连续发送丢字节
1、串口配置有错
2、发送串口时,要等待发送完毕以后,再发送下一个字节内容。
RE:双串口连续发送丢字节
RE:双串口连续发送丢字节
RE:双串口连续发送丢字节
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{
}
RE:双串口连续发送丢字节
void USART1_SendString(uint8_t *str)
{
while(*str!='\0' && *str!='#')
{
USART_SendData(USART1, (uint8_t) *str);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){};
str++;
}
}
RE:双串口连续发送丢字节
// USART_ClearFlag(USART2, USART_FLAG_TC);//清除发送完成标志,解决第一个字节无法发送的问题
// USART_ClearFlag(USART1, USART_FLAG_TC);//清除发送完成标志,解决第一个字节无法发送的问题
USART_GetFlagStatus(USART1, USART_FLAG_TC);
USART_GetFlagStatus(USART2, USART_FLAG_TC);
被屏蔽掉的是以前的 发送前初始化,也就是导致串口2丢掉首字节的初始化,未屏蔽的是现在能完整发送的初始化。看来我这问题挺偏的啊 版主你没碰见过?
RE:双串口连续发送丢字节