|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 岁月如歌21 于 2025-11-25 17:11 编辑
" Y' }) y0 E9 {5 J* p; A6 ^! g2 U) Y% M- N
ModBus_RTU(4组串口任选+DMA传输的主/从机)的lib库使用,STC32位8051实现
! t- p- K" J( u/ b/ r: L5 F一、准备好自己的代码工程
- J! n, E5 ]0 }2 m" Y( @! H这里以STC32位8051的点灯工程为例8 B/ B6 {2 H7 V3 c
+ w+ A9 N+ D8 ]& X# ?/ }3 e编写该代码,可以看到这个0错误,下载进去之后可以看到屠龙刀板子上的P2端口的8个LED开始闪烁,表示这个代码工程无问题( Q8 e4 v1 O6 J X* A$ d% ]6 c5 @
; z7 Y5 W8 P1 k7 A C
' y& Y3 o- ~6 b0 |二、添加库文件到自己的工程里里
3 Q5 ^ D+ S) T5 q6 N1.添加附件代码包到工程里
2 c' S9 q2 C2 P( s3 y% z! u, u
9 I7 d v/ }. l( V6 X2.然后按照如下方法调用一下头文件的路径
: o9 Z2 {4 V$ q& W9 [9 k
% D a: g% b5 w. S! X! E2 I
3.将库文件添加到工程列表( x7 @/ a, b! V/ _' z3 @
6 h1 R3 D4 J6 } g4.修改配置文件" h* S& r0 E- V
4.1头文件
9 d' B0 V6 ]4 E, M0 |3 L) \
6 t. N) Y7 [% @& |8 t确认自己工程里的stc32的头文件是否是这个,不是的话修改位自己的头文件
4 y; d$ ^0 m! L7 m' Z Z' J" t; H1 e: k
4.2系统时钟
. P8 B1 B5 `, E# T7 p+ w
4 H, ~1 w: z2 u2 y5 N# N, w/ {4 {3 o因为用到了串口,在115200的波特率下,我一般用这个系统时钟,后面所有要使用系统时钟的地方均需要调用config.h,调用这个MAIN_Fosc的宏来获取系统时钟,
' H2 G0 Y2 [' Q4 T0 }* P9 Z
5 [. `2 G# z4 R由于原来的工程里也有,且宏定义名称都一样,所以只需要把这个宏删掉,然后修改调用的头文件为config.h即可1 R4 _5 ~, g6 S. ? o
g; x. p7 K& @
4.3宏定义
9 R2 _9 l$ t9 v- L
0 B- U$ @) v+ I+ }# y3 t如果自己的工程里也有这部分的宏定义,可以屏蔽自己的,统一调用这个config.h来获取数据。
$ l1 D. e P5 P7 E3 d' D# l. ?0 Z# A. ?& p( z1 B# C
, f8 B7 r5 C. h r5 G
5按照如上的代码改完,工程应该可以编译通过了
% t" i. P: h; @/ N, N. S6 K0 P3 V
' U$ b6 Q; \' x% E) e) g
可以看到工程已经0错误,0警告了
8 {: M/ v7 p1 z8 P1 L2 Y% w v6 |" M0 j0 S
三、开始测试串口收发的代码+ _$ b+ T5 q6 T1 m( c& s, A
1添加系统时钟计时变量# _) h. c$ \6 l
7 B' D; T$ A9 }( W主函数添加这一变量,用来记录系统运行的上一次的时刻
; V. \6 ~. b k$ @* \: b$ r" Q: k' h d/ M) A6 }& L
2.添加头文件到代码里
) O3 h- l- _7 `! g5 z* y
- \/ y+ Y, V/ B4 b/ \这个是串口和485口的配置头文件,配合lib文件一起使用的
: }& `* P' u% |5 _) W% p- v
: o, q4 v4 W e3选择串口的参数
; @' w3 N+ v4 ]3 p" Q0 t& G: C
! h7 q; f: j. Y6 Y5 o记得最后在工程里添加串口初始化的函数哦!!! q. X' _1 E9 X* @4 x
1 Z8 \+ E! S/ e/ v0 j% K* w4.编写如下的串口处理代码
- m2 ?, r. R: m* J6 G* e) d
' H9 z: A( E2 C" V+ U
2 G; D& ?5 `2 V2 {6 N
+ `; K$ {5 O% C; u# Y( D- V+ O
1 }" n4 d+ K4 V+ Z
e8 ^4 s" I+ ]1 ~9 F1 [. B9 h" p8 A/ N9 b/ [& e
, b# F0 G: Z2 ]/ J# N# x
9 @( M6 k5 ] I- y" k, i% I1 a; L% Q$ d' R, c* @+ ~6 w
4 F! x6 ]9 G% v- X f7 i3 `3 O" W% ]& c) W) n
: K9 y5 [2 R1 w" F0 \" v
) d! c( ~% R5 y4 |3 u
* `. u k; A# f5 V+ v3 M# p/ L$ i3 S7 E) M Z8 M
" \& J ]& b9 ~: i
' t; I1 N) ?# v4 z7 l9 u' R0 R5 J9 v4 S1 p1 ^4 E+ R
|
|