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

串口接收延时问题

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