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

串口接收延时问题

[复制链接]
hhhhhhhaa 提问时间:2018-11-20 09:01 /
求助一个问题,简单描述一下,我现在通过串口1发送一个数据出去,同时开启定时器,在五分钟内如果有数据返回,表示通讯成功,如果没有表示通讯失败,现在有一个疑问,我如果开启定时器以后,单片机是执行定时器去了,还是一直循环接收?
收藏 评论24 发布时间:2018-11-20 09:01

举报

24个回答
奏奏奏 回答时间:2018-11-20 09:04:43
这个需要你将代码具体贴出来分析,要不然你画流程图出来也行
因为有很多细节没有交代清楚

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

stm1024 回答时间:2018-11-20 09:06:17
思路没问题的,配置好定时器之后,就可以不用在while循环里面管定时器的事情了,然后定时器中断到来的时候你再做处理就行

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

回答时间:2018-11-20 09:09:48
用中断接收,然后检测是否收到应答数据,再做超时判断。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

zjczm 回答时间:2018-11-20 09:55:09
如果别的事情都不干,一直等待接收也可以。
或者,你可以不用循环中等待。可以定期或不定期去查询是否接收到数据。
当然,中断也是可以的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

andeyqi 回答时间:2018-11-20 10:55:13
去执行什么取决于你的程序是怎么样的逻辑,你可以while(1)里定周期的去查询串口和定时器状态,如果使用中断的话这部分逻辑也可以放到中断处理函数里来处理。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

五哥1 回答时间:2018-11-20 13:24:21
用时间片轮大法
hhhhhhhaa 回答时间:2018-11-20 15:00:11
stm1024 发表于 2018-11-20 09:06
思路没问题的,配置好定时器之后,就可以不用在while循环里面管定时器的事情了,然后定时器中断到来的时候 ...

我现在设置了一个500ms的定时器,如果不管这个定时器的话,500ms就会中断一次,计数器加1,等计数器到达我需要的时间后,执行跳出循环,同时停止失能定时器,清除中断标记,如果在我规定的时间内有数据返回,显示返回的数据并失能定时器,清除中断标记。等待下一次按键发送数据,发送完数据后开启定时器
hhhhhhhaa 回答时间:2018-11-20 15:01:42
安 发表于 2018-11-20 09:09
用中断接收,然后检测是否收到应答数据,再做超时判断。

因为我接收数据是要在5分钟内的任意时刻都可以,不能用中断的,需要一直检查有没有收到数据
回答时间:2018-11-20 15:05:32
数据读取不及时,会有溢出的风险,所以还是用中断接收放入缓冲区,其他地方再对缓冲区进行判断处理。如果能够保证数据很快读取走,可以做逻辑处理
if(systick-a<300*1000)
{
//判断串口接收标志位
//接收数据,并处理
}
123下一页

所属标签

相似问题

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