原创 STM32F基于MODBUS-RTU规约的485通讯

2008-11-1 07:59 7438 15 28 分类: MCU/ 嵌入式
开发环境IAR4.42A
/*****************************************************
          modbus-rtu 通讯规约
通讯方式:rs-485 半双功
校验方式:crc16
停止位:2位
编写:孙可
编写日期:2008年8月26日
版本:v0.3(励磁的通讯)
编程思路:
    1.串口中断允许自动接收总线上的信息,当接收的
    字节后超过3.5个字节时间没有新的字节认为本次
    接收完成,接收完成标志置1;如果接收完成标志已
    经置1又有数据进来则丢弃新来的数据。
    2.串口接收数据的处理, 当接收完成标志置1进入
    接收数据处理, (1)首先判断接收的第一位数据与
    本机地址是否相同,如果不相同清空接收缓存不发
    送任何信息; (2)接收的第一位数据与本机地址相
    同,则对接收缓存中的数据进行crc16校验,如果接
    收的校验位与本校验结果不相同清空接收缓存不发
    送任何信息;
    (3)如果crc16校验正确则根据数据串中的命令码进
    行相应的处理。
******************************************************/
#include "modbus.h"

unsigned char Com0_id = 0x05;//本机串口0的通讯地址
unsigned char Uart0_rev_buff[100];//com0串口接收缓冲区
unsigned char Uart0_send_buff[100];//com0串口发送缓冲区
volatile unsigned char Uart0_rev_count;
vs8 Uart0_send_counter = 0;
volatile unsigned char Uart0_rev_comflag;
volatile unsigned char Crc_counter = 0;//com0校验计数器
volatile unsigned char *Uart0_send_pointer = Uart0_send_buff;//com0串口发送指针
vu16 Mkgz_bz = 0;//模块故障标志1:输入异常,2:过压,3:欠压,4:过温
vu16 Out_current = 50;//输出电流
vu16 Out_voltage = 240;//输出电压
vu16 Mkzt_bz = 0;//模块状态标志
vu16 OutX_current = 1000;//输出限流
vu16 Jc_voltage = 2530;//均充电压
vu16 Fc_voltage = 2400;//浮充电压

IAR的完整工程https://static.assets-stash.eet-china.com/album/old-resources/2008/11/1/43bf241c-2121-4fed-8ec8-480fd6eac087.rar
PARTNER CONTENT

文章评论13条评论)

登录后参与讨论

用户74634 2012-6-14 15:01

谢谢分享

用户381792 2011-10-5 22:18

ding

用户249060 2011-6-28 16:07

太谢谢了!!!

用户79962 2011-5-8 09:25

收藏!

用户1381877 2011-4-6 20:53

用户404597 2011-1-2 20:49

谢谢分享

用户530357 2010-7-5 15:06

怎么没有项目文件啊

用户530357 2010-7-5 15:05

谢谢,正在找呢

用户236680 2009-11-5 08:52

谢谢!

sunke9_998892717 2009-10-21 09:32

本身添加功能码和中断是没有关系的,你可以先把你添加的部分注释掉,看看有没有别的地方不对,如果没有再仔细研究你添加的部分哪里用到了中断。
相关推荐阅读
小可歌 2016-05-31 13:54
【转帖】模拟电路的四重境界
无意中看到这个文章,虽然自己也搞了4 年模电了,但后看完之后发现自己原来根本就没有入门阿!现发上来和大家共享!·············   复旦攻读微电子专业模拟芯片设计方向研究生开始到...
小可歌 2016-05-28 07:14
发帖庆祝用app inventor的录音机保存MP3格式录音成功!
看似简单的功能,可是把我难够呛,刚学APP INVENTOR没几天,手里的两本书翻来掉去的看了N遍。APP INVENTOR的录音机默认是保存录音文件为3GP格式,我想保存成MP3文件就没有地方找...
小可歌 2016-02-22 08:56
C语言Printf格式,调试最好的助手!
    C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为...
小可歌 2016-02-19 15:19
对于SRAM的地址线和数据线是可以打乱顺序用的!!!!
因为SRAM的地址具有唯一性,其实数据线也有唯一性。 也就是A0~A18,D0~D15,都是唯一的。 正常是:A0~A18,接FSMC的A0~A18。 D0~D15,接FSMC的D0~D15. 假...
小可歌 2016-02-02 11:29
Linux系统下基本命令
Linux系统下基本命令: 要区分大小写  uname 显示版本信息(同win2K的 ver)  dir 显示当前目录文件,ls -al 显示包括隐藏文件(同win2K的 dir)  pwd...
小可歌 2016-02-02 11:28
DOS命令大全
对于一般的网民来说,dos命令是什么真的不知道,dos命令有些什么作用也不知道。但是黑客们却精通dos命令,经常利用dos命令进行各种任务,以达到自己的目的。下面笔者为大家汇总出dos命令大全,希...
EE直播间
更多
我要评论
13
15
关闭 站长推荐上一条 /3 下一条