OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 28898|回复: 34

分享FreeRTOS + FreeModbus + UART_RTO

[复制链接]

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-19 13:01:32 | 显示全部楼层 |阅读模式
本帖最后由 八度空间 于 2017-9-19 13:09 编辑

之前移植了FreeModbus到STM32上面来,这次来一个整合

1、应用中使用到STM32F3和STM32F0系列的芯片,发现串口有一个接收超时寄存器
    1.png
    芯片介绍还有RS485支持
    2.png
    STM32F3还有这个介绍
    3.png
    这样还能节省一个硬件定时器
2、废话不说,直接改代码
    2.1 修改UART接口文件vMBPortSerialEnable()函数
         4.png
    2.2 修改UART初始化函数xMBPortSerialInit()函数
         5.png
    2.3 修改UART中断服务函数
         6.png
3、修改定时器接口文件,不带RTO功能的平台还是需要定时器的支持
    3.1 xMBPortTimersInit()函数,直接返回TRUE即可
    3.2 vMBPortTimersEnable()函数和vMBPortTimersDisable()函数空着即可
4、修改mbconfig.h文件,在这里,我增加了一个宏定义,专门配置UART这个RTO的,需要的使能即可
    11.png
5、至此修改初步完毕,RTOS部分就不说了,参考附件代码,或者原子哥的相关教程
6、还是和之前帖子一样,发送一串0A 04 00 01 00 01 61 71,发现没数据返回,然后仔细研究了一下数据接收流程,最后在RTU API文件中增加这个,模拟一次接收完成
    8.png
7、这次加上了RTOS,在port文件中还需要修改一下(如果有这个几个函数的话)
    9.png

    10.png
8、再次编译下载,然后发送,有返回了,说明成功了
9、RTOS中,单独建立了一个任务进行Modbus的查询,间隔10ms,其他方法大家也可以使用,不一定非按本贴、附件例程等强制性这样做
10、RTOS中,每个任务在进入while之前,都等待各个任务的初始化完成,目的是为了任务的同步,优点就不详说了,大家慢慢体会
11、最后,本次使用的源码来自之前的帖子,本次只测试了RTU模式,至于其他的,没做测试,ASCII模式,大致看了一下,RTO功能估计能直接使用,只要接口文件和RTU模式一样即可(未测试,只是猜测)




Modbus_Test_V1.0.rar

2 MB, 下载次数: 3763

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
604
金钱
604
注册时间
2016-1-2
在线时间
81 小时
发表于 2017-10-17 21:23:21 | 显示全部楼层
厉害了, 这样3.5个字符时间就不用定时器了。
可惜手上没有F0,不然得试试
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-10-18 08:58:20 | 显示全部楼层
xichuangxue 发表于 2017-10-17 21:23
厉害了, 这样3.5个字符时间就不用定时器了。
可惜手上没有F0,不然得试试

现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

12

主题

241

帖子

0

精华

高级会员

Rank: 4

积分
806
金钱
806
注册时间
2017-8-17
在线时间
159 小时
发表于 2017-10-21 16:47:54 | 显示全部楼层
借鉴一波
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2017-7-31
在线时间
9 小时
发表于 2017-11-2 16:30:08 | 显示全部楼层
学习一下,现在在修改一个 freemodbus 主站的程序,纠结ing
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-11-2 23:56:27 | 显示全部楼层
z12dew 发表于 2017-11-2 16:30
学习一下,现在在修改一个 freemodbus 主站的程序,纠结ing

自己组织得了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

24

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-10-9
在线时间
273 小时
发表于 2017-11-19 18:29:44 | 显示全部楼层
modbus调试软件有从机的吗
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-11-19 20:52:12 | 显示全部楼层
一个人生活好多天 发表于 2017-11-19 18:29
modbus调试软件有从机的吗

有啊
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2017-11-20 22:22:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-12-1
在线时间
1 小时
发表于 2017-12-1 20:06:55 | 显示全部楼层
移植了下,收到第一个包进入中断,后续就一直自动进入,咋整呢
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-4 00:30:49 | 显示全部楼层
chendongdong 发表于 2017-12-1 20:06
移植了下,收到第一个包进入中断,后续就一直自动进入,咋整呢

我一直用着没问题啊,你怎么移植的?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2017-12-4 08:25:27 | 显示全部楼层
不错。谢谢楼主分享。看看我用的407支持不支持。。。。
呵呵。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-4 09:06:34 | 显示全部楼层
无名氏 发表于 2017-12-4 08:25
不错。谢谢楼主分享。看看我用的407支持不支持。。。。

407没有RTO寄存器,用不了这个功能
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-12-1
在线时间
1 小时
发表于 2017-12-5 08:39:28 | 显示全部楼层
八度空间 发表于 2017-12-4 00:30
我一直用着没问题啊,你怎么移植的?

我是在407上,加了定时器,我再查查。
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2017-12-5 16:38:06 | 显示全部楼层
chendongdong 发表于 2017-12-5 08:39
我是在407上,加了定时器,我再查查。

要求不高可以换F3系列的芯片,这个就有RTO,我用的302
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2017-12-5 17:24:34 | 显示全部楼层
八度空间 发表于 2017-12-4 09:06
407没有RTO寄存器,用不了这个功能

确实不支持。。。挺好的功能用不了。
还是谢谢楼主分享。
呵呵。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2017-12-1
在线时间
1 小时
发表于 2017-12-7 10:13:57 | 显示全部楼层
八度空间 发表于 2017-12-5 16:38
要求不高可以换F3系列的芯片,这个就有RTO,我用的302

硬件已定。可以了,谢谢lz代码,最后调整了cubemx生成的中断代码就可以了~
回复 支持 反对

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-11-21
在线时间
42 小时
发表于 2018-3-16 18:25:30 | 显示全部楼层
之前也移植了一下FreeRTOS和FreeMODBUS的,里面又两个Port.c文件。编译就错误。
回复 支持 反对

使用道具 举报

60

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2017-11-22
在线时间
136 小时
发表于 2018-8-16 15:40:58 | 显示全部楼层
newphj 发表于 2018-3-16 18:25
之前也移植了一下FreeRTOS和FreeMODBUS的,里面又两个Port.c文件。编译就错误。

楼主怎么处理的
回复 支持 反对

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-11-21
在线时间
42 小时
发表于 2018-8-24 22:27:17 | 显示全部楼层

用了RTT,组件里有移植好的。还有主机,
回复 支持 反对

使用道具 举报

60

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2017-11-22
在线时间
136 小时
发表于 2018-8-25 10:52:47 | 显示全部楼层
newphj 发表于 2018-8-24 22:27
用了RTT,组件里有移植好的。还有主机,

我直接移植,编译没出错,能用,MDK5.25
回复 支持 反对

使用道具 举报

60

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
478
金钱
478
注册时间
2017-11-22
在线时间
136 小时
发表于 2018-8-25 10:53:07 | 显示全部楼层
newphj 发表于 2018-8-24 22:27
用了RTT,组件里有移植好的。还有主机,

我直接移植,编译没出错,能用,MDK5.25
回复 支持 反对

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2013-11-21
在线时间
42 小时
发表于 2018-9-26 10:17:04 | 显示全部楼层
zhangjinhui 发表于 2018-8-25 10:53
我直接移植,编译没出错,能用,MDK5.25

能分享一下工程吗
回复 支持 反对

使用道具 举报

3

主题

95

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2451
金钱
2451
注册时间
2015-11-1
在线时间
300 小时
发表于 2018-10-16 12:27:15 | 显示全部楼层
很好,M0对Modbus通信进行了优化。
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2019-9-15
在线时间
10 小时
发表于 2020-2-24 14:51:26 | 显示全部楼层
freemodbus移植到FreeRTOS系统中,主控用STM32F407,大师们帮忙提供一个样板或者例程,不胜感激!
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2020-3-1 20:01:20 | 显示全部楼层
hxq1998 发表于 2020-2-24 14:51
freemodbus移植到FreeRTOS系统中,主控用STM32F407,大师们帮忙提供一个样板或者例程,不胜感激!

其他没什么的,我就是新建一个任务查询
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

5

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2019-10-7
在线时间
36 小时
发表于 2020-12-16 11:22:12 | 显示全部楼层
谢谢大佬分享,请问有没有STM32F407 UCOSIII 的Freemodbus从机例程?
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2021-1-28 22:27:59 | 显示全部楼层
铜豌豆 发表于 2020-12-16 11:22
谢谢大佬分享,请问有没有STM32F407 UCOSIII 的Freemodbus从机例程?

单独一个任务轮训即可
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3312
金钱
3312
注册时间
2015-4-19
在线时间
364 小时
发表于 2021-2-2 16:07:34 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

22

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3976
金钱
3976
注册时间
2015-4-18
在线时间
402 小时
发表于 2021-10-9 09:54:16 | 显示全部楼层
请问下F1的有没有这个串口接收超时的
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2021-10-10 20:09:38 | 显示全部楼层
752151619 发表于 2021-10-9 09:54
请问下F1的有没有这个串口接收超时的

F1没有
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

1

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-4-24
在线时间
53 小时
发表于 2023-4-23 15:19:37 | 显示全部楼层
学习了,谢谢分享哈
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2023-5-2 06:54:36 | 显示全部楼层
感谢大佬分享!
回复 支持 反对

使用道具 举报

10

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-10-30
在线时间
22 小时
发表于 2023-8-9 13:54:45 | 显示全部楼层
请问一下,如果是多任务情况,然后通过modbus传输数据到上位机,但是现在的问题就是,其他的任务可以正常执行,但是到modbus这就会卡死,请问可能是什么原因呢
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
 楼主| 发表于 2023-11-24 23:07:25 | 显示全部楼层
tttt11 发表于 2023-8-9 13:54
请问一下,如果是多任务情况,然后通过modbus传输数据到上位机,但是现在的问题就是,其他的任务可以正常执 ...

debug看下在什么地方卡住了,猜测你的可能在串口发送数据那里卡住
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表