打印

如何使用modbus crc16校验位写出系统中断

[复制链接]
739|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
浪子寻仙|  楼主 | 2023-3-30 09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,需要用到这个校验位,不会写USART485的中断,初始化已经完成。

使用特权

评论回复
评论
xch 2023-3-30 16:57 回复TA
孩子,多大了? 
沙发
fxyc87| | 2023-3-30 09:06 | 只看该作者
你的语文水平不行啊,标题我看不懂。

使用特权

评论回复
板凳
浪子寻仙|  楼主 | 2023-3-30 09:11 | 只看该作者
fxyc87 发表于 2023-3-30 09:06
你的语文水平不行啊,标题我看不懂。

就是先写校验位,再写一个中断,输入需要校验位,输出看标志位数值形成固定参数

使用特权

评论回复
地板
浪子寻仙|  楼主 | 2023-3-30 09:46 | 只看该作者
有人吗??

使用特权

评论回复
5
coody| | 2023-3-30 10:38 | 只看该作者
楼主表达有问题,看不懂。
CRC16是一种校验方法,就是一种纯软件的计算方法,结果是2个字节数据。

使用特权

评论回复
6
浪子寻仙|  楼主 | 2023-3-30 13:51 | 只看该作者
coody 发表于 2023-3-30 10:38
楼主表达有问题,看不懂。
CRC16是一种校验方法,就是一种纯软件的计算方法,结果是2个字节数据。 ...

系统中断需要第三位十六进制字符位03的时候,停止

使用特权

评论回复
7
icecut| | 2023-3-30 16:55 | 只看该作者
全都看不懂

使用特权

评论回复
8
王栋春| | 2023-3-30 22:06 | 只看该作者
表示看不懂楼主的意思,希望再归纳一下。

使用特权

评论回复
9
fxyc87| | 2023-3-31 08:44 | 只看该作者
浪子寻仙 发表于 2023-3-30 13:51
系统中断需要第三位十六进制字符位03的时候,停止

大概明白了,第1字节站号,第2字节功能码,第3,4字节是寄存器地址,当寄存器地址=3时触发某个功能,是吧?
我自己写的modbus就有这个功能,比如上位机触发打开某功能,关闭某功能,或者触发某个IO输出,
这是我的代码,当在modbus数据接收完成时,调用

ModbusHookCheck(addr,*(RecPtr+4));

struct modubs_hook_list hook_list[]={        //MODBUS位写入HOOK清单
        {ModbusHookWriteY,((uint16_t *)&App.Data.Y[0]-&App.u16[0])*16,RegYlen*16},
        {ModbusHookLockX,((uint16_t *)&App.Data.X[0]-&App.u16[0])*16,RegXlen*16},
        //=9锁定标志 位0=锁定输入点 位1锁定工位1 位2锁定工位2 位3辅助逻辑锁定
        {ModbusHookManual,((uint16_t *)&App.Data.M[9]-&App.u16[0])*16,16},
};



void ModbusHookCheck(uint16_t addr,int value){
        for(int i=0;i<3;i++){
                if(addr>=hook_list[i].start_addr && addr<(hook_list[i].start_addr+hook_list[i].addr_len)){
                        //相对地址
                        hook_list[i].func(addr-hook_list[i].start_addr,value);
                }
        }
}

void ModbusHookWriteY(int addr,int value){
        SEGGER_RTT_printf(0,"GPIO Manual Y%d=%d\r\n",addr,value>0);
        WriteY(addr,value);
}
.................

使用特权

评论回复
10
ayb_ice| | 2023-3-31 08:45 | 只看该作者
这都哪跟哪

使用特权

评论回复
11
cmyldd| | 2023-3-31 09:09 | 只看该作者
听不懂说什么, 不好理解

使用特权

评论回复
12
coody| | 2023-3-31 10:32 | 只看该作者
浪子寻仙 发表于 2023-3-30 13:51
系统中断需要第三位十六进制字符位03的时候,停止

同样看不懂这句。

使用特权

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

本版积分规则

6

主题

30

帖子

0

粉丝