你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口接收延时问题

[复制链接]
hhhhhhhaa 提问时间:2018-11-20 09:01 /
阅读主题, 点击返回1楼
收藏 评论24 发布时间:2018-11-20 09:01
24个回答
stm1024 回答时间:2018-11-20 15:09:01
hhhhhhhaa 发表于 2018-11-20 15:01
因为我接收数据是要在5分钟内的任意时刻都可以,不能用中断的,需要一直检查有没有收到数据 ...

可能我没表达清楚。
1.串口发送数据前,定时器配置好,但是未使能。
2.串口发送数据后,定时器使能,开启五分钟倒计时
3.while循环里面检查串口数据,如果:
3.1 5分钟内收到数据,则认为未超时,失能定时器,然后主循环做有应答的逻辑
3.2 5分钟后未收到数据,定时器中断被触发,修改标识超时的全局变量,失能定时器,主循环中做超时无应答的逻辑
为什么一定不能用中断呢?有其他原因吗?
TLLED 回答时间:2018-11-20 16:46:14
我觉得可以这样处理,串口1数据输出数据后, 打开定时器,串口接收要使用中断接收,不要使用循环查询方式,否则会出现丢数据现象,使用中断不影响,在规定的时间内接收到数据后,把有关接收定时器的变量清零,没有接收到数据就去判断超时处理。
hhhhhhhaa 回答时间:2018-11-20 17:09:29
stm1024 发表于 2018-11-20 15:09
可能我没表达清楚。
1.串口发送数据前,定时器配置好,但是未使能。
2.串口发送数据后,定时器使能,开启 ...

额,定时器中断后,还是会继续啊,是不是要在中断里把定时器失能啊?因为我没用过定时器,现在也是找了一个例子
hhhhhhhaa 回答时间:2018-11-20 17:10:26
安 发表于 2018-11-20 15:05
数据读取不及时,会有溢出的风险,所以还是用中断接收放入缓冲区,其他地方再对缓冲区进行判断处理。如果能 ...

大神,你说的这个太高深,我看不懂,我初学这个。。。。
hhhhhhhaa 回答时间:2018-11-20 17:11:36
TLLED 发表于 2018-11-20 16:46
我觉得可以这样处理,串口1数据输出数据后, 打开定时器,串口接收要使用中断接收,不要使用循环查询方式, ...

嗯,我就是一直在查询接收的数据,和您说的差不多
回答时间:2018-11-20 17:14:50
hhhhhhhaa 发表于 2018-11-20 17:10
大神,你说的这个太高深,我看不懂,我初学这个。。。。

如果串口数据不能及时读取,后面来的数据就会导致串口产生溢出错误。
hhhhhhhaa 回答时间:2018-11-20 17:15:14
stm1024 发表于 2018-11-20 15:09
可能我没表达清楚。
1.串口发送数据前,定时器配置好,但是未使能。
2.串口发送数据后,定时器使能,开启 ...

定时器是不是开启以后,如果不停止就会一直进行下去?
hhhhhhhaa 回答时间:2018-11-21 08:33:35
安 发表于 2018-11-20 17:14
如果串口数据不能及时读取,后面来的数据就会导致串口产生溢出错误。

不懂啊,比如说一直给这个串口发命令,如果中断里没有读取的话,中断标志位也就不会清除,那是不是就是会一直在中断里死循环了?死循环以后还怎么溢出啊
回答时间:2018-11-21 08:54:46
是会产生中断,需要清除溢出标志位和读取数据寄存器,这个手册里面都写了的。
hhhhhhhaa 回答时间:2018-11-21 13:28:37
安 发表于 2018-11-21 08:54
是会产生中断,需要清除溢出标志位和读取数据寄存器,这个手册里面都写了的。 ...

嗯,这个再手册里看到了,我其实不太懂您说的意思啊,流程没搞懂O(∩_∩)O哈哈~

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版