EDA365电子论坛网

标题: ModBus_RTU(4组串口任选+DMA传输的主从机)的lib库使用,STC32实现 [打印本页]

作者: 岁月如歌21    时间: 2025-11-25 16:55
标题: ModBus_RTU(4组串口任选+DMA传输的主从机)的lib库使用,STC32实现
本帖最后由 岁月如歌21 于 2025-11-25 17:11 编辑
$ Y5 `: M) H4 C7 N; N& X9 |
9 M' Y+ w0 y# P3 HModBus_RTU(4组串口任选+DMA传输的/机)的lib库使用,STC32位8051实现
) j* R: {3 @- Q. L8 C3 T一、准备好自己的代码工程4 i$ x2 ?/ u+ {. v0 l/ n% h
这里以STC32位8051的点灯工程为例
; t. c, m- W6 w& K! I
[attach]402441[/attach]
2 d: C" L" W8 X# v- R0 L$ J) Z编写该代码,可以看到这个0错误,下载进去之后可以看到屠龙刀板子上的P2端口的8个LED开始闪烁,表示这个代码工程无问题% z2 r7 E5 G  l4 Y  \; {
/ l. X- W. ]  u5 K$ G
# C& F" `4 k& |  p4 c
二、添加库文件到自己的工程里里6 W) s4 E& `3 u) f! g3 t. t. O
1.添加附件代码包到工程里) N8 T& ~8 q1 u5 y) X8 p, ^
: I4 ^+ p0 v* d: Q- u
2.然后按照如下方法调用一下头文件的路径$ B, e* y% I& c

: r  G9 a2 G+ [  g3.将库文件添加到工程列表/ f/ Z! p% K/ J' q# e) @; [# W$ x3 @

: B- l# J  m; S3 z" u- K+ }6 x4.修改配置文件% q; k2 r) p! P' R7 p
4.1头文件
, g5 M; \+ y/ h3 v# X( t; R3 P

5 T  K3 p- k$ N/ Q3 h# r确认自己工程里的stc32的头文件是否是这个,不是的话修改位自己的头文件
8 b) |- I0 k8 s/ }
( s6 I0 k% C: {6 e% c4.2系统时钟
6 m. u( ~5 A3 B0 r
. y8 {! M' H2 {/ o; v" D
因为用到了串口,在115200的波特率下,我一般用这个系统时钟,后面所有要使用系统时钟的地方均需要调用config.h,调用这个MAIN_Fosc的宏来获取系统时钟,
. }5 `; u7 @% t* T

: r( E' p; u0 I由于原来的工程里也有,且宏定义名称都一样,所以只需要把这个宏删掉,然后修改调用的头文件为config.h即可- z4 m3 F0 _- ]2 k! k5 c7 r

" w4 _- {* A7 X( h: y4.3宏定义; k/ `& u$ M) Q8 J8 k
, b1 q! v2 V, q; O
如果自己的工程里也有这部分的宏定义,可以屏蔽自己的,统一调用这个config.h来获取数据。
, s* A2 L0 @  _% g3 n& Z9 h$ n, _+ |. i

, l- h7 u7 }' j9 a5按照如上的代码改完,工程应该可以编译通过了0 w8 }$ c6 S; n( o) I5 I- B
# J9 h; X9 @9 L) `5 m
可以看到工程已经0错误,0警告了
5 M2 V" C# Q6 |3 `
7 M# S" l+ W. S2 W% f5 _6 I; b三、开始测试串口收发的代码
) K4 b5 B7 Y* r& l5 ^1添加系统时钟计时变量
4 N5 b) v$ i) h2 L
0 H* F+ [) e+ K6 [0 i
主函数添加这一变量,用来记录系统运行的上一次的时刻
/ N7 M* J+ e1 I6 A5 \5 g# O' q. f1 W6 k; K. Z% m# S' j
2.添加头文件到代码里
& p/ o, p) s$ k0 _
% m& m! V, P# P% F0 K$ J
这个是串口和485口的配置头文件,配合lib文件一起使用的
- W* o' D8 x9 T; W5 G0 l% Y) y- v$ w. F1 n0 `! w; B& }  n. L
3选择串口的参数
% B2 m6 L" `0 M
6 a7 J' ^) W+ b: D+ Z
记得最后在工程里添加串口初始化的函数哦!!* v8 j/ G9 U9 ?$ y- `
2 b) U5 i, a' E+ X2 ~7 |1 c
4.编写如下的串口处理代码0 F( |- P6 U5 }9 v0 D

: b0 X( `0 V4 C$ f; P2 ]+ {
7 w# j7 u, u6 h4 l% X+ K  w/ |  F! h  ]  h1 [
0 X$ E5 y0 q' g$ w

& w) ]7 K+ N. Q3 q9 {$ s: n
4 a0 a0 m; [4 L" E6 Q: k( t9 B$ {$ q. V' s* ]' i
3 g7 Z# _9 u( @3 B3 U# _

; `. L- ?- u  S( X$ ]0 t
' H" [6 U8 W6 |  ^
: \* V- [% }& S, W* V: v3 C2 h0 y' l
/ g- u" P9 E# F/ l

$ A) x$ j2 q$ j5 M" j

1 [- R  u2 d! ]% k/ I9 z4 M; B0 G0 E: i2 ~) s0 ^; o
6 r: W/ i! o6 n3 B1 X
4 s4 w' L- }/ R, Q! g+ J" M

/ k+ g. D' l6 G# b7 b




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2