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

📄 serial.h

📁 STM3240G-Eval_uCOS-III
💻 H
📖 第 1 页 / 共 2 页
字号:
    void        (*TxStop)       (SERIAL_DEV     *pdev,          /* Stop  transmitter.                                   */
                                 SERIAL_ERR     *perr);

    void        (*TxOctet)      (SERIAL_DEV     *pdev,          /* Transmit octet with device.                          */
                                 CPU_INT08U      datum,
                                 SERIAL_ERR     *perr);

    void        (*ISR_Handler)  (SERIAL_DEV     *pdev,          /* ISR handler.                                         */
                                 CPU_INT08U      type);
} SERIAL_DRV_API;


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

typedef  const  struct  serial_bsp_api {
    void        (*ClkEn)        (SERIAL_ERR   *perr);           /* En  device/peripheral clk.                           */

    void        (*ClkDis)       (SERIAL_ERR   *perr);           /* Dis device/peripheral clk.                           */

    void        (*CfgGPIO)      (CPU_BOOLEAN   flow_ctrl,       /* Cfg device/peripheral GPIO.                          */
                                 SERIAL_ERR   *perr);

    void        (*CfgInt)       (SERIAL_DEV   *pdev,            /* Cfg device/peripheral int ctrl.                      */
                                 SERIAL_ERR   *perr);

    CPU_INT32U  (*ClkFreqGet)   (void);                         /* Get device/peripheral clk freq.                      */
} SERIAL_BSP_API;


/*
*********************************************************************************************************
*                           SERIAL INTERFACE DEVICE CONFIGURATION DATA TYPE
*********************************************************************************************************
*/

typedef  struct  serial_dev_cfg {
    void                 *BaseAddr;                             /* Device registers' base address.                      */
    SERIAL_DRV_API       *Drv_API;                              /* Device driver API.                                   */

    SERIAL_BSP_API       *BSP_API;                              /* Optional device BSP API. Dependent on device driver. */
} SERIAL_DEV_CFG;


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

struct  serial_line_drv_api {
    void       *(*Open)         (SERIAL_DEV  *pdev,             /* Open  line driver.                                   */
                                 SERIAL_ERR  *perr);

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

    void        (*RdOctet)      (SERIAL_DEV  *pdev,             /* Rd octet from buf via protocol.                      */
                                 SERIAL_BUF  *pbuf,
                                 CPU_INT08U  *pdatum,
                                 SERIAL_ERR  *perr);

    void        (*WrOctet)      (SERIAL_DEV  *pdev,             /* Wr octet into buf via protocol.                      */
                                 SERIAL_BUF  *pbuf,
                                 CPU_INT08U   datum,
                                 SERIAL_ERR  *perr);
};


/*
*********************************************************************************************************
*                                  SERIAL INTERFACE DEVICE DATA TYPE
*********************************************************************************************************
*/

struct  serial_dev {
    SERIAL_IF_NBR         IF_Nbr;                               /* IF nbr.                                              */

    SERIAL_DEV_CFG       *Dev_Cfg;                              /* Device configuration.                                */

    void                 *Drv_Data;                             /* Device driver internal data.                         */

    SERIAL_LINE_DRV_API  *LineDrv_API;                          /* Line Driver API.                                     */
    void                 *LineDrv_Data;                         /* Line Driver internal data.                           */
};


/*
*********************************************************************************************************
*                              SERIAL INTERFACE CONFIGURATION DATA TYPE
*********************************************************************************************************
*/

struct  serial_if_cfg {
    CPU_INT32U  Baudrate;
    CPU_INT08U  DataBits;
    CPU_INT08U  StopBits;
    CPU_INT08U  Parity;
    CPU_INT08U  FlowCtrl;
};


/*
*********************************************************************************************************
*                                     CALLBACK FUNCTION DATA TYPE
*********************************************************************************************************
*/

typedef  void  (SERIAL_CALLBACK_FNCT)     (SERIAL_IF_NBR   if_nbr,
                                           void           *parg,
                                           void           *pbuf,
                                           CPU_SIZE_T      len,
                                           SERIAL_ERR      err);


/*
*********************************************************************************************************
*                                         FUNCTION PROTOTYPES
*********************************************************************************************************
*/

                                                                /* ---------------- INIT/CFG FUNCTIONS ---------------- */
                                                                /* Init module.                                         */
SERIAL_ERR     Serial_Init       (void);
                                                                /* Add device driver.                                   */
void           Serial_DevDrvAdd  (CPU_CHAR              *pname,
                                  SERIAL_DEV_CFG        *pdev_cfg,
                                  CPU_SIZE_T             rd_buf_len,
                                  CPU_SIZE_T             wr_buf_len,
                                  SERIAL_ERR            *perr);

                                                                /* -------------- COMMUNICATION FUNCTIONS ------------- */
                                                                /* Open interface.                                      */
SERIAL_IF_NBR  Serial_Open       (CPU_CHAR              *pname,
                                  SERIAL_IF_CFG         *pcfg,
                                  SERIAL_ERR            *perr);
                                                                /* Close interface.                                     */
void           Serial_Close      (SERIAL_IF_NBR          if_nbr,
                                  SERIAL_ERR            *perr);
                                                                /* Set interface line drv.                              */
void           Serial_SetLineDrv (SERIAL_IF_NBR          if_nbr,
                                  SERIAL_LINE_DRV_API   *pline_api,
                                  SERIAL_ERR            *perr);
                                                                /* Read from interface.                                 */
CPU_SIZE_T     Serial_Rd         (SERIAL_IF_NBR          if_nbr,
                                  void                  *pdest,
                                  CPU_SIZE_T             len,
                                  CPU_INT32U             timeout_ms,
                                  SERIAL_ERR            *perr);
                                                                /* Read from interface asynchronously.                  */
void           Serial_RdAsync    (SERIAL_IF_NBR          if_nbr,
                                  void                  *pdest,
                                  CPU_SIZE_T             len,
                                  SERIAL_CALLBACK_FNCT  *phandler,
                                  void                  *parg,
                                  SERIAL_ERR            *perr);
                                                                /* Wait for octet array to arrive on interface.         */
void           Serial_WaitFor    (SERIAL_IF_NBR          if_nbr,
                                  void                  *psrc,
                                  CPU_SIZE_T             len,
                                  CPU_INT32U             timeout_ms,
                                  SERIAL_ERR            *perr);
                                                                /* Write to interface.                                  */
CPU_SIZE_T     Serial_Wr         (SERIAL_IF_NBR          if_nbr,
                                  void                  *psrc,
                                  CPU_SIZE_T             len,
                                  CPU_INT32U             timeout_ms,
                                  SERIAL_ERR            *perr);
                                                                /* Write to interface asynchronously.                   */
void           Serial_WrAsync    (SERIAL_IF_NBR          if_nbr,
                                  void                  *psrc,
                                  CPU_SIZE_T             len,
                                  SERIAL_CALLBACK_FNCT  *phandler,
                                  void                  *parg,
                                  SERIAL_ERR            *perr);



                                                                /* --------- HANDLERS CALLED BY DEV DRV LAYER --------- */
                                                                /* Get device ptr.                                      */
SERIAL_DEV    *SerialIF_GetDevPtr(SERIAL_IF_NBR          if_nbr,
                                  SERIAL_ERR            *perr);
                                                                /* Handle rx complete.                                  */
void           SerialIF_Rx       (SERIAL_DEV            *pdev,
                                  CPU_INT08U             datum);
                                                                /* Handle tx complete.                                  */
void           SerialIF_Tx       (SERIAL_DEV            *pdev);

#if (SERIAL_CFG_WR_BUF_EN == DEF_ENABLED)                       /* Handle tx echo.                                      */
void           SerialIF_TxWrBuf  (SERIAL_DEV            *pdev,
                                  CPU_INT08U             datum);
#endif


/*
*********************************************************************************************************
*                                        CONFIGURATION ERRORS
*********************************************************************************************************
*/

#ifdef   SERIAL_CFG_ARG_CHK_EXT_EN
#if    ((SERIAL_CFG_ARG_CHK_EXT_EN != DEF_ENABLED ) && \
        (SERIAL_CFG_ARG_CHK_EXT_EN != DEF_DISABLED))
#error  "SERIAL_CFG_ARG_CHK_EXT_EN        illegally #define'd in 'app_cfg.h'"
#error  "                                [MUST be DEF_ENABLED ]             "
#error  "                                [     || DEF_DISABLED]             "
#endif
#endif


#ifndef  SERIAL_CFG_MAX_NBR_IF
#error  "SERIAL_CFG_MAX_NBR_IF                  not #define'd in 'app_cfg.h'"
#error  "                                [MUST be >=   1]                   "
#error  "                                [     && <  255]                   "

#elif  ((SERIAL_CFG_MAX_NBR_IF < 1) || \
        (SERIAL_CFG_MAX_NBR_IF > SERIAL_IF_NBR_MAX))
#error  "SERIAL_CFG_MAX_NBR_IF            illegally #define'd in 'app_cfg.h'"
#error  "                                [MUST be >=   1]                   "
#error  "                                [     && <  255]                   "
#endif



#ifdef   SERIAL_CFG_RD_BUF_EN
#if    ((SERIAL_CFG_RD_BUF_EN != DEF_ENABLED ) && \
        (SERIAL_CFG_RD_BUF_EN != DEF_DISABLED))
#error  "SERIAL_CFG_RD_BUF_EN             illegally #define'd in 'app_cfg.h'"
#error  "                                [MUST be DEF_ENABLED ]             "
#error  "                                [     || DEF_DISABLED]             "
#endif
#endif


#ifdef   SERIAL_CFG_WR_BUF_EN
#if    ((SERIAL_CFG_WR_BUF_EN != DEF_ENABLED ) && \
        (SERIAL_CFG_WR_BUF_EN != DEF_DISABLED))
#error  "SERIAL_CFG_WR_BUF_EN             illegally #define'd in 'app_cfg.h'"
#error  "                                [MUST be DEF_ENABLED ]             "
#error  "                                [     || DEF_DISABLED]             "
#endif
#endif



#ifndef  LIB_MEM_CFG_ALLOC_EN
#error  "LIB_MEM_CFG_ALLOC_EN                   not #define'd in 'app_cfg.h'"
#error  "                                [MUST be DEF_ENABLED ]             "
#error  "                                [     || DEF_DISABLED]             "

#elif   (LIB_MEM_CFG_ALLOC_EN != DEF_ENABLED)
#error  "LIB_MEM_CFG_ALLOC_EN             illegally #define'd in 'app_cfg.h'"
#error  "                                [MUST be DEF_ENABLED]              "
#endif


/*
*********************************************************************************************************
*                                             MODULE END
*********************************************************************************************************
*/

#endif                                                          /* End of SERIAL module include.                        */

⌨️ 快捷键说明

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