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

串口接收延时问题

[复制链接]
hhhhhhhaa 提问时间:2018-11-20 09:01 /
阅读主题, 点击返回1楼
收藏 评论24 发布时间:2018-11-20 09:01
24个回答
hhhhhhhaa 回答时间:2018-11-21 13:28:53
stm1024 发表于 2018-11-20 15:09
可能我没表达清楚。
1.串口发送数据前,定时器配置好,但是未使能。
2.串口发送数据后,定时器使能,开启 ...

我现在就是这么做的,
奏奏奏 回答时间:2018-11-21 13:42:28
建议楼主先把STM32串口中断的原理先搞懂
版主回复了这么多好像也没有在一个频道上,
楼主说的中断是定时器中断,其他人说的是串口中断,不要搞混了,理解不了很正常。

评分

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

查看全部评分

hhhhhhhaa 回答时间:2018-11-21 13:50:36
奏奏奏 发表于 2018-11-21 13:42
建议楼主先把STM32串口中断的原理先搞懂
版主回复了这么多好像也没有在一个频道上,
楼主说的中断是定时器 ...

不管哪个中断吧,我确实没搞懂,现在程序能用了,用的定时器中断计数,计数到一定值了,就跳出循环,在循环的时候一直监测有没有收到数据
党国特派员 回答时间:2018-12-3 17:36:29
就是一个接收超时的检测。关键是在接收的这段时间里你还要不要MCU去处理其它事情。
1、接收时MCU不处理其它事情,就是检测是否有数据到达,那就简单。发完成后,开一个计时器(timer,systick)都可以,1秒中记数一次,在接收检测函数里读一下时间做判断。
2、接收时MCU还要处理其它的事情,这个就是要在接收中断里来接收数据。发完成后,开一个5分钟的定时器,只要定时器中断触发了,说明接收超时了。如果在5分钟(中断)内接到数据,立马停止定时器。接收成功。这种就相当于异步通讯。异步处理起来相当麻烦。首先你得发送和接收一一对应,还有可能出现接收乱序的问题。如果没有OS支持,那是相当的痛苦。

评分

参与人数 1ST金币 +5 蝴蝶豆 +2 收起 理由
STMCU + 5 + 2

查看全部评分

hhhhhhhaa 回答时间:2018-12-4 15:17:37
党国特派员 发表于 2018-12-3 17:36
就是一个接收超时的检测。关键是在接收的这段时间里你还要不要MCU去处理其它事情。
1、接收时MCU不处理其它 ...

您说的很好,我现在设计的这个就是串口通讯,不做别的,相当于一个串口测试工具,把需要发送和接收的数据储存在MCU里,然后通过触摸屏来发送接收数据,测试各个串口,加上了定时器,还挺好用的,以前不懂定时器,用的是延时,结果延时的时候MCU都来处理延时了,接收了数据也收不到了,所以后来开始学习定时器,感觉挺方便的,设置好定时器后,开启定时器,就可以一直扫描串口接收到的数据,如果定时器到五分钟了还没有收到数据,说明设备有问题,直接跳出扫描,根据不同的串口,设置不同的等待时间,开启不同的定时器,哈哈,已经试验成功了,现在正在测量电池的电压问题,ADC 两个电阻搞定,正在测试程序和完善界面
123

所属标签

相似问题

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