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

串口接收延时问题

[复制链接]
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版