OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 751|回复: 8

分享FreeRTOS + FreeModbus + UART_RTO

[复制链接]

  离线 

110

主题

7274

帖子

12

精华

资深版主

Rank: 8Rank: 8

积分
10477
金钱
10477
注册时间
2013-9-10
在线时间
297 小时
发表于 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, 下载次数: 123

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

使用道具 举报

  离线 

0

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

  离线 

110

主题

7274

帖子

12

精华

资深版主

Rank: 8Rank: 8

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

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

使用道具 举报

  离线 

1

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

  离线 

0

主题

5

帖子

0

精华

新手上路

Rank: 1

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

使用道具 举报

  离线 

110

主题

7274

帖子

12

精华

资深版主

Rank: 8Rank: 8

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

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

使用道具 举报

  离线 

11

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2015-10-9
在线时间
176 小时
发表于 4 天前 | 显示全部楼层
modbus调试软件有从机的吗
回复 支持 反对

使用道具 举报

  离线 

110

主题

7274

帖子

12

精华

资深版主

Rank: 8Rank: 8

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

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

使用道具 举报

  离线 

9

主题

150

帖子

2

精华

高级会员

Rank: 4

积分
583
金钱
583
注册时间
2013-4-11
在线时间
32 小时
发表于 3 天前 | 显示全部楼层
一个人生活好多天 发表于 2017-11-19 18:29
modbus调试软件有从机的吗

从机:modbus slave
主机:modbus poll
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-23 04:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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