来源:JSY-KJ(健思研科技)
发布时间:2026-04-03
要实现与JSY-MK-163T的数据互通,首先需要编写对应的收发功能函数,支持字节、字符串、数组发送(适配Modbus协议指令格式),以及数据接收存储,具体如下:
UART功能函数
UART发送
1.以查询的方式发送数据

2. 以中断的方式发送数据

注:本期我们讲的是中断发送,所以等下我们调用的是该方式发送数据。
UART接收
1.uart接收数据功能函数

UART中断发送接收流程
uart发送单个

uart发送一串

uart发送数组

uart接收数据

首先,我们先定义一个结构,用于发送和接收多个数据准备。

接着写发送数据函数

获取发送的数据

设置要发送的数据长度

设置复制函数

设置接收缓冲区

设置接收函数

最后就是主函数的调用

打印结果
1.结果乱码
根据上面的流程,我们明明可以实现了串口中断的发送和接收数据,但是会发现接收到的数据是乱的,这是怎么回事?

很多小伙伴按照上述代码配置后,会发现接收的JSY-MK-163T模块数据是乱码,这不是代码写错了,也不是模块的问题,而是系统时钟配置缺失!HC32F005的UART波特率依赖系统时钟,时钟频率不对,波特率就会偏差,导致与JSY-MK-163T模块的4800bps波特率不匹配,进而出现乱码。
解决方案:时钟配置

设置频率

时钟初始化

最后,我们在主函数调用就可以解决乱码的问题,如下图是配置时钟之后的打印结果:

配置时钟后,通过串口助手模拟JSY-MK-163T模块发送数据,或直接与真实的JSY-MK-163T模块对接,网关能正常接收并转发数据,数据无乱码、无丢失,证明UART中断收发功能完全实现,与JSY-MK-163T模块的通讯通道彻底打通!
到这里,数据传输的基础就打牢了~ 下一期我们将进入项目核心环节:利用Modbus协议读取JSY-MK-163T模块的电能数据(电压、电流、功率等),并进行解析,真正实现家庭用电的精准监测!