打印
[STM32F1]

串口发送影响系统的实时性,怎么提高系统的实时性?

[复制链接]
3260|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lnhaing|  楼主 | 2015-2-27 09:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主芯片是:STM32F103VBT6
这几天通过现场实际工作,发现串口发送数据时偶尔会影响系统的动作输出功能。
目前程序思路是这样的:
1:检测的串口发送数据条件为真,进行数据发送。
2:检测到外界编码器位置改变,到达一定位置时,输出某个动作。
---------------------------------------------------------------------------------------
现场遇到的问题是:在串口发送数据的过程中,编码器信号到达一定位置,需要输出某个动作,由于程序还在处理发送数据,造成此周期内某个动作不能输出。动作输出优先级别大于串口发送级别!!
针对这种情况,有没有好的处理办法?比如在串口发送数据的过程中检测到编码器位置改变,跳出数据发送模块优先处理动作输出,空闲时候再处理数据发送。不知道这思路对不对,然后程序也不知道怎么处理?请教各位大神!!
沙发
huzi2099| | 2015-2-27 09:11 | 只看该作者
串口触发dma这是最快的了

使用特权

评论回复
板凳
lnhaing|  楼主 | 2015-2-27 09:14 | 只看该作者
huzi2099 发表于 2015-2-27 09:11
串口触发dma这是最快的了

想过,DMA模式需要乒乓缓冲模式不

使用特权

评论回复
地板
xueyingdao| | 2015-2-27 09:27 | 只看该作者
你发送过程不会  还是使用轮询的方式发送的吧?使用中断的机制,应该实时性是够的。

使用特权

评论回复
5
icecut| | 2015-2-27 09:33 | 只看该作者
ls正解

使用特权

评论回复
6
lnhaing|  楼主 | 2015-2-27 10:34 | 只看该作者
xueyingdao 发表于 2015-2-27 09:27
你发送过程不会  还是使用轮询的方式发送的吧?使用中断的机制,应该实时性是够的。 ...

串口中断发送?

使用特权

评论回复
7
mmuuss586| | 2015-2-27 12:06 | 只看该作者

用中断,或加状态机;
或DMA,或上操作系统;

使用特权

评论回复
8
huzi2099| | 2015-2-27 14:29 | 只看该作者
lnhaing 发表于 2015-2-27 09:14
想过,DMA模式需要乒乓缓冲模式不

菲斯卡尔才乒乓

使用特权

评论回复
9
huzi2099| | 2015-2-27 14:29 | 只看该作者
lnhaing 发表于 2015-2-27 09:14
想过,DMA模式需要乒乓缓冲模式不

菲斯卡尔才乒乓

使用特权

评论回复
10
m564522634| | 2015-2-27 15:04 | 只看该作者
发送不要用查询,用中断。  

使用特权

评论回复
11
diweo| | 2015-2-27 15:27 | 只看该作者
发送寄存器填充第一个数据后,马上开启TXE中断,中断程序里面填充后面的数据(一次中断填一个),最后一个数据发送完成后(又会触发中断,然后,在中断程序内部)关闭TXE中断。
用DMA就更方便了。

使用特权

评论回复
12
energy1| | 2015-2-27 15:53 | 只看该作者
中断

使用特权

评论回复
13
HuSir| | 2015-2-27 23:00 | 只看该作者
可以考虑下USB虚拟串口。

使用特权

评论回复
14
pattywu| | 2015-2-27 23:13 | 只看该作者
楼主是被参考书教坏了的学生。
很多参考书或例程,都是串口查询发送的。

使用特权

评论回复
15
myxiaonia| | 2015-2-28 14:50 | 只看该作者
m564522634 发表于 2015-2-27 15:04
发送不要用查询,用中断。

其实查询也是可以的,能发则发,不能发就过去;不过lz估计是死等,这就麻烦了

使用特权

评论回复
16
huangqi412| | 2015-2-28 15:06 | 只看该作者
串口死循环发也没事吧。  问题是检测要用中断,而且要优先级高,不管你串口怎么折腾的都可以随时插队。
串口和检测都不用中断?  真好玩。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

82

帖子

0

粉丝