⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.h

📁 STM3240G-Eval_uCOS-III
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                     SERIAL (BYTE) COMMUNICATION
*
*                         (c) Copyright 2007-2009; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*               Knowledge of the source code may NOT be used to develop a similar product.
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                     SERIAL (BYTE) COMMUNICATION
*
* Filename      : serial.h
* Version       : V2.00
* Programmer(s) : FGK
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                               MODULE
*
* Note(s) : (1) This header file is protected from multiple pre-processor inclusion through use of the
*               SERIAL present pre-processor macro definition.
*********************************************************************************************************
*/

#ifndef   SERIAL_PRESENT
#define   SERIAL_PRESENT


/*
*********************************************************************************************************
*                                        SERIAL VERSION NUMBER
*
* Note(s) : (1) (a) The Serial software version is denoted as follows :
*
*                       Vx.yy
*
*                           where
*                                  V     denotes 'Version' label
*                                  x     denotes major software version revision number
*                                  yy    denotes minor software version revision number
*
*               (b) The Serial software version label #define is formatted as follows :
*
*                       ver = x.yy * 100
*
*                           where
*                                  ver   denotes software version number scaled as
*                                        an integer value
*                                  x.yy  denotes software version number
*********************************************************************************************************
*/

#define  SERIAL_VERSION            200u                         /* See Note #1.                                         */


/*
*********************************************************************************************************
*                                               EXTERNS
*********************************************************************************************************
*/

#ifdef    SERIAL_MODULE
#define   SERIAL_EXT
#else
#define   SERIAL_EXT  extern
#endif


/*
*********************************************************************************************************
*                                            INCLUDE FILES
*********************************************************************************************************
*/

#include  <cpu.h>

#include  <lib_def.h>
#include  <lib_ascii.h>
#include  <lib_str.h>
#include  <lib_mem.h>

#include  <app_cfg.h>

#include  <serial_buf.h>
#include  <serial_type.h>
#include  <serial_line_dflt.h>


/*
*********************************************************************************************************
*                                           DEFAULT DEFINES
*********************************************************************************************************
*/

#ifndef  SERIAL_CFG_TX_DESC_NBR                                 /* Number of descriptors in transmit queue.             */
#define  SERIAL_CFG_TX_DESC_NBR                            0
#endif

#ifndef  SERIAL_CFG_ARG_CHK_EXT_EN
#define  SERIAL_CFG_ARG_CHK_EXT_EN                         DEF_DISABLED
#endif

#ifndef  SERIAL_CFG_RD_BUF_EN
#define  SERIAL_CFG_RD_BUF_EN                              DEF_DISABLED
#endif

#ifndef  SERIAL_CFG_WR_BUF_EN
#define  SERIAL_CFG_WR_BUF_EN                              DEF_DISABLED
#endif


/*
*********************************************************************************************************
*                                      SERIAL ERROR CODE DEFINES
*********************************************************************************************************
*/

#define  SERIAL_ERR_NONE                                   0
#define  SERIAL_ERR_NULL_PTR                               1
#define  SERIAL_ERR_NULL_FNCT                              2
#define  SERIAL_ERR_SIGNAL                                 3
#define  SERIAL_ERR_UNDERFLOW                              4
#define  SERIAL_ERR_OVERFLOW                               5
#define  SERIAL_ERR_IF_INVALID_NBR                         6
#define  SERIAL_ERR_BUF_POOL_INIT                          7
#define  SERIAL_ERR_BUF_ALLOC                              8
#define  SERIAL_ERR_MEM_ALLOC                              9
#define  SERIAL_ERR_FAIL                                  10
#define  SERIAL_ERR_TIMEOUT                               11

#define  SERIAL_ERR_DRV_INVALID                           20
#define  SERIAL_ERR_DRV_OPEN                              21
#define  SERIAL_ERR_DRV_IO_ERR                            22

#define  SERIAL_ERR_DEV_DUP_NAME                          30
#define  SERIAL_ERR_DEV_NOT_FOUND                         31
#define  SERIAL_ERR_DEV_ALREADY_OPEN                      32

#define  SERIAL_ERR_IF_NOT_AVAIL                          40
#define  SERIAL_ERR_IF_NOT_OPEN                           41
#define  SERIAL_ERR_IF_IN_USE                             42
#define  SERIAL_ERR_IF_CLOSING                            43

#define  SERIAL_ERR_LINE_END                              50
#define  SERIAL_ERR_LINE_INVALID                          51
#define  SERIAL_ERR_LINE_DRV_OPEN                         52

#define  SERIAL_OS_ERR_NONE                               60
#define  SERIAL_OS_ERR_SIGNAL                             61
#define  SERIAL_OS_ERR_TIMEOUT                            62
#define  SERIAL_OS_ERR_INIT                               63


/*
*********************************************************************************************************
*                                 SERIAL DEVICE CONFIGURATION DEFINES
*********************************************************************************************************
*/

#define  SERIAL_BAUDRATE_110                             110
#define  SERIAL_BAUDRATE_300                             300
#define  SERIAL_BAUDRATE_1200                           1200
#define  SERIAL_BAUDRATE_2400                           2400
#define  SERIAL_BAUDRATE_4800                           4800
#define  SERIAL_BAUDRATE_9600                           9600
#define  SERIAL_BAUDRATE_19200                         19200
#define  SERIAL_BAUDRATE_38400                         38400
#define  SERIAL_BAUDRATE_57600                         57600
#define  SERIAL_BAUDRATE_115200                       115200
#define  SERIAL_BAUDRATE_230400                       230400
#define  SERIAL_BAUDRATE_460800                       460800
#define  SERIAL_BAUDRATE_921600                       921600

#define  SERIAL_DATABITS_5                                 5
#define  SERIAL_DATABITS_6                                 6
#define  SERIAL_DATABITS_7                                 7
#define  SERIAL_DATABITS_8                                 8

#define  SERIAL_STOPBITS_1                                 0
#define  SERIAL_STOPBITS_1_5                               1
#define  SERIAL_STOPBITS_2                                 2

#define  SERIAL_PARITY_NONE                                0
#define  SERIAL_PARITY_ODD                                 1
#define  SERIAL_PARITY_EVEN                                2
#define  SERIAL_PARITY_MARK                                3
#define  SERIAL_PARITY_SPACE                               4

#define  SERIAL_FLOW_CTRL_NONE                             0
#define  SERIAL_FLOW_CTRL_HARDWARE                         1


/*
*********************************************************************************************************
*                                          ISR TYPE DEFINES
*********************************************************************************************************
*/

#define  SERIAL_ISR_TYPE_UNKNOWN                           0u
#define  SERIAL_ISR_TYPE_RX                                1u
#define  SERIAL_ISR_TYPE_RX_OVERRUN                        2u
#define  SERIAL_ISR_TYPE_TX_RDY                            3u
#define  SERIAL_ISR_TYPE_TX_COMPLETE                       4u
#define  SERIAL_ISR_TYPE_ERR                               5u


/*
*********************************************************************************************************
*                                        SERIAL IF NBR DEFINES
*********************************************************************************************************
*/

#define  SERIAL_IF_NBR_MAX_VAL                             DEF_INT_08U_MAX_VAL
#define  SERIAL_IF_NBR_MIN_VAL                             DEF_INT_08U_MIN_VAL

#define  SERIAL_IF_NBR_NONE                                SERIAL_IF_NBR_MAX_VAL
#define  SERIAL_IF_NBR_MIN                                 SERIAL_IF_NBR_MIN_VAL
#define  SERIAL_IF_NBR_MAX                                (SERIAL_IF_NBR_MAX_VAL - 1)
#define  SERIAL_IF_NBR_TOT                                (SERIAL_IF_NBR_MIN_VAL + SERIAL_CFG_MAX_NBR_IF)


/*
*********************************************************************************************************
*                                             DATA TYPES
*********************************************************************************************************
*/

typedef  CPU_INT16U  SERIAL_ERR;


/*
*********************************************************************************************************
*                            SERIAL INTERFACE DEVICE DRIVER API DATA TYPE
*********************************************************************************************************
*/

typedef  const  struct  serial_drv_api {
    void        (*Init)         (SERIAL_ERR     *perr);         /* Driver initialization.                               */

    void        (*Open)         (SERIAL_DEV     *pdev,          /* Open  device driver.                                 */
                                 SERIAL_IF_CFG  *pcfg,
                                 SERIAL_ERR     *perr);

    void        (*Close)        (SERIAL_DEV     *pdev,          /* Close device driver.                                 */
                                 SERIAL_ERR     *perr);

    void        (*RxStart)      (SERIAL_DEV     *pdev,          /* Start receiver.                                      */
                                 SERIAL_ERR     *perr);

    void        (*RxStop)       (SERIAL_DEV     *pdev,          /* Stop  receiver.                                      */
                                 SERIAL_ERR     *perr);

    void        (*RxOctet)      (SERIAL_DEV     *pdev,          /* Receive octet from device.                           */
                                 CPU_INT08U     *pdatum,
                                 SERIAL_ERR     *perr);

    void        (*TxStart)      (SERIAL_DEV     *pdev,          /* Start transmitter.                                   */
                                 SERIAL_ERR     *perr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -