找回密码
 注册
关于网站域名变更的通知
查看: 386|回复: 2
打印 上一主题 下一主题

请教STC15,串口库函数中的几个定义

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-1-3 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
人在学习stc15单片机官方的库函数中,遇到了如下问题
! J& e  v; X& `- _/ s* O" @" ]在uart.h中,定义了这个结构体:typedef struct
& z4 e& ?8 z: Z5 f{
0 G* t" |. k2 Z) J, M        u8        id;                                //串口号! q9 ]2 \; O8 Z: c; d

- L5 K9 H: u1 b        u8        TX_read;                //发送读指针
% w* W5 P9 `: L% x1 V: z: Y1 i        u8        TX_write;                //发送写指针
/ F& K3 [3 `5 w5 {5 t        u8        B_TX_busy;                //忙标志
7 P: o1 D1 M: ]" ^* U' \$ q3 u
3 m' i( p+ @) L2 p9 q6 I        u8         RX_Cnt;                        //接收字节计数1 K$ I. z" L2 I0 q
        u8        RX_TimeOut;                //接收超时. r9 K2 C+ g7 b1 I5 n9 A2 }  g
        u8        B_RX_OK;                //接收块完成4 ~' e8 ~' e* C+ [% h
} COMx_Define;+ I* p; N( {3 b' x
2 ?1 |- u% a9 G0 J' f3 J
在uart.c文件中,使用了如下函数:& U$ Z; j6 A( C, }  D+ G, D- R
" k  j9 q$ p8 v8 Z4 F: ]1 s

, s6 b) ~, H& o3 M# M/*************** 装载串口发送缓冲 *******************************/; c- m2 L4 j9 z) `1 M# W

# i/ u2 l. t  \3 ^( M0 w

  J% o" i" x, _! V' V7 p& R- [void TX1_write2buff(u8 dat)        //写入发送缓冲,指针+19 \+ _+ X3 b$ v4 ?  I) }+ C( o
{
: f* s9 V  Y0 R        TX1_Buffer[COM1.TX_write] = dat;        //装发送缓冲  m8 G& ?- G/ b( w1 @
        if(++COM1.TX_write >= COM_TX1_Lenth)        COM1.TX_write = 0;2 F2 U. e: _7 Q
9 v: N6 y. M  ?. d, c
+ s/ i8 c+ d/ p
        if(COM1.B_TX_busy == 0)                //空闲
  j) \* O+ B  l3 Y5 [& ~        {  ' D+ @# s& T5 B/ B% w. n
                COM1.B_TX_busy = 1;                //标志忙/ n7 c- r" f9 E/ e) E
                TI = 1;                                        //触发发送中断
; b2 z0 ?% R/ W3 N, \3 R9 Q2 f, P        }2 n6 u; U, M2 j5 r; M$ ^7 ~
}: y2 m$ \4 ^5 D+ {

0 i. B0 \( d7 y* e4 {7 U+ F  O* w7 g' l: d; L

$ _: _" d5 Z. V& m$ [9 A5 ]: S4 ^
" v! x; L, Y5 h! Q6 N- U
8 x: O$ ]6 M' c0 _7 X9 A8 i/ x
/********************* UART1中断函数************************/% G* e+ |5 k5 c& E0 x
void UART1_int (void) interrupt UART1_VECTOR9 y/ F6 U4 D6 \; a# r
{
4 c4 v5 B8 V5 X7 _        if(RI)
, r6 \% y& H, P) }- m        {
3 X7 |/ X  y. @9 c7 s                RI = 0;
; b+ S( G) Y0 x2 b- w' P6 c/ w% @5 S; h                if(COM1.B_RX_OK == 0): o8 q) @- z; P8 M& `8 o  o1 t
                {
6 {% s% u6 G/ l8 q( j2 o                        if(COM1.RX_Cnt >= COM_RX1_Lenth)        COM1.RX_Cnt = 0;
& {6 G2 k+ k4 H0 D+ i" y5 P) h                        RX1_Buffer[COM1.RX_Cnt++] = SBUF;0 e+ k9 b" P, H$ K# [
                        COM1.RX_TimeOut = TimeOutSet1;
* Y' f9 L6 K, n' x9 k; d                }' {# g3 f; s* A3 \; \+ t& H
        }, i" m$ H+ }$ D: s" `9 J  V
. c0 [0 C$ Y# v& Q
        if(TI)$ k. G, Q9 q; [& K3 Z
        {
' ^9 A* J, Q8 t+ s                TI = 0;
  T4 P! [8 `# C. G$ |2 f                if(COM1.TX_read != COM1.TX_write)
( q3 O/ V' l# p; d                {8 |" Q9 b2 d, Y, j$ s, B7 r& T
                         SBUF = TX1_Buffer[COM1.TX_read];4 j; K& R8 T+ q
                        if(++COM1.TX_read >= COM_TX1_Lenth)                COM1.TX_read = 0;
7 m7 d6 w0 W- x                }
( G! k4 s1 C$ Q6 C, U                else        COM1.B_TX_busy = 0;
2 M7 H5 Q# @  e) ^) A6 ]) B        }. O# s* m4 n" W  R
}
* }2 h& a& Y9 u* ^+ A2 _% c8 b! g

6 Q) {% Q" h& ~5 S6 t0 m* ~[color=rgb(51, 102, 153) !important]
, D" g' y( b7 D: v& W' S- J
- w3 w0 S' l! F
[color=rgb(51, 102, 153) !important]; j$ j0 K  N$ H' }

, C! R$ t+ j: O5 l$ a, e[color=rgb(51, 102, 153) !important]2 c, X9 C" w( \5 V' B. p! }
& i" b2 m. U8 S2 F1 S
[color=rgb(51, 102, 153) !important]
* \# o# f, R% M2 K; l
4 e1 a+ X$ v' X/ P) ~
% {  `; c2 b5 y" }1 s2 T
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-1-3 10:25 | 只看该作者
    方便大量数据发送
  • TA的每日心情
    开心
    2023-5-15 15:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-1-3 13:55 | 只看该作者
    也可以不使用结构体,这个也可以说是个人习惯吧
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-23 13:55 , Processed in 0.125000 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表