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

📄 serial_bsp_stm3240x.c

📁 STM3240G-Eval_uCOS-III
💻 C
📖 第 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
*                                            DEVICE DRIVER
*
*                                                STM32
*                                          BSP FOR STM3240x
*
* Filename      : serial_bsp_stm3240x.c
* Version       : V2.00
* Programmer(s) : FGK
*                 FF
*********************************************************************************************************
*/

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

#include  <stm32f4xx_gpio.h>
#include  <serial_bsp_stm3240x.h>


/*
*********************************************************************************************************
*                                            LOCAL DEFINES
*********************************************************************************************************
*/

                                                                /* ----------- REGISTER BASE SPECIFICATIONS ----------- */
#define  SERIAL_BSP_STM32_USART1_BASE     ((void *)0x40011000)
#define  SERIAL_BSP_STM32_USART2_BASE     ((void *)0x40004400)
#define  SERIAL_BSP_STM32_USART3_BASE     ((void *)0x40004800)
#define  SERIAL_BSP_STM32_USART4_BASE     ((void *)0x40004C00)
#define  SERIAL_BSP_STM32_USART5_BASE     ((void *)0x40005000)
#define  SERIAL_BSP_STM32_USART6_BASE     ((void *)0x40011400)


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


/*
*********************************************************************************************************
*                                      LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/
                                                                /* ------------------ USART1 BSP API ------------------ */
static  void        SerialBSP_STM32_USART1_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART1_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART1_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART1_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART1_ClkFreqGet  (void);

                                                                /* ------------------ USART2 BSP API ------------------ */
static  void        SerialBSP_STM32_USART2_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART2_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART2_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART2_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART2_ClkFreqGet  (void);

                                                                /* ------------------ USART3 BSP API ------------------ */
static  void        SerialBSP_STM32_USART3_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART3_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART3_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART3_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART3_ClkFreqGet  (void);

                                                                /* ------------------- USART4 BSP API ----------------- */
static  void        SerialBSP_STM32_USART4_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART4_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART4_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART4_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART4_ClkFreqGet  (void);

                                                                /* ------------------- USART5 BSP API ----------------- */
static  void        SerialBSP_STM32_USART5_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART5_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART5_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART5_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART5_ClkFreqGet  (void);

                                                                /* ------------------ USART6 BSP API ------------------ */
static  void        SerialBSP_STM32_USART6_ClkEn       (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART6_ClkDis      (SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART6_CfgGPIO     (CPU_BOOLEAN   flow_ctrl,
                                                        SERIAL_ERR   *perr);
static  void        SerialBSP_STM32_USART6_CfgInt      (SERIAL_DEV   *pdev,
                                                        SERIAL_ERR   *perr);
static  CPU_INT32U  SerialBSP_STM32_USART6_ClkFreqGet  (void);


static  void        SerialBSP_STM32_USART1_IntHandler    (void);
static  void        SerialBSP_STM32_USART2_IntHandler    (void);
static  void        SerialBSP_STM32_USART3_IntHandler    (void);
static  void        SerialBSP_STM32_USART4_IntHandler    (void);
static  void        SerialBSP_STM32_USART5_IntHandler    (void);
static  void        SerialBSP_STM32_USART6_IntHandler    (void);

/*
*********************************************************************************************************
*                                   SERIAL INTERFACE DEVICE BSP API
*********************************************************************************************************
*/

static  SERIAL_BSP_API  SerialBSP_STM32_USART1 = {
    SerialBSP_STM32_USART1_ClkEn,
    SerialBSP_STM32_USART1_ClkDis,
    SerialBSP_STM32_USART1_CfgGPIO,
    SerialBSP_STM32_USART1_CfgInt,
    SerialBSP_STM32_USART1_ClkFreqGet
};

static  SERIAL_BSP_API  SerialBSP_STM32_USART2 = {
    SerialBSP_STM32_USART2_ClkEn,
    SerialBSP_STM32_USART2_ClkDis,
    SerialBSP_STM32_USART2_CfgGPIO,
    SerialBSP_STM32_USART2_CfgInt,
    SerialBSP_STM32_USART2_ClkFreqGet
};

static  SERIAL_BSP_API  SerialBSP_STM32_USART3 = {
    SerialBSP_STM32_USART3_ClkEn,
    SerialBSP_STM32_USART3_ClkDis,
    SerialBSP_STM32_USART3_CfgGPIO,
    SerialBSP_STM32_USART3_CfgInt,
    SerialBSP_STM32_USART3_ClkFreqGet
};

static  SERIAL_BSP_API  SerialBSP_STM32_USART4 = {
    SerialBSP_STM32_USART4_ClkEn,
    SerialBSP_STM32_USART4_ClkDis,
    SerialBSP_STM32_USART4_CfgGPIO,
    SerialBSP_STM32_USART4_CfgInt,
    SerialBSP_STM32_USART4_ClkFreqGet
};

static  SERIAL_BSP_API  SerialBSP_STM32_USART5 = {
    SerialBSP_STM32_USART5_ClkEn,
    SerialBSP_STM32_USART5_ClkDis,
    SerialBSP_STM32_USART5_CfgGPIO,
    SerialBSP_STM32_USART5_CfgInt,
    SerialBSP_STM32_USART5_ClkFreqGet
};

static  SERIAL_BSP_API  SerialBSP_STM32_USART6 = {
    SerialBSP_STM32_USART6_ClkEn,
    SerialBSP_STM32_USART6_ClkDis,
    SerialBSP_STM32_USART6_CfgGPIO,
    SerialBSP_STM32_USART6_CfgInt,
    SerialBSP_STM32_USART6_ClkFreqGet
};


/*
*********************************************************************************************************
*********************************************************************************************************
*                                      SERIAL INTERFACE DEVICES
*********************************************************************************************************
*********************************************************************************************************
*/

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART1 = {
     SERIAL_BSP_STM32_USART1_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART1
};

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART2 = {
     SERIAL_BSP_STM32_USART2_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART2
};

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART3 = {
     SERIAL_BSP_STM32_USART3_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART3
};

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART4 = {
     SERIAL_BSP_STM32_USART4_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART4
};

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART5 = {
     SERIAL_BSP_STM32_USART5_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART5
};

SERIAL_DEV_CFG  SerialDevCfg_STM32_USART6 = {
     SERIAL_BSP_STM32_USART6_BASE,
    &SerialDrv_STM32_API,
    &SerialBSP_STM32_USART6
};

/*
*********************************************************************************************************
*                                   SERIAL INTERFACE DEVICE POINTER
*
* Note(s) : (1) A serial interface device pointer is required to be passed to the serial interface device
*               driver api ISR_Handler(). 
*********************************************************************************************************
*/

static  SERIAL_DEV  *SerialDev_STM32_USART1_DevPtr;
static  SERIAL_DEV  *SerialDev_STM32_USART2_DevPtr;
static  SERIAL_DEV  *SerialDev_STM32_USART3_DevPtr;
static  SERIAL_DEV  *SerialDev_STM32_USART4_DevPtr;
static  SERIAL_DEV  *SerialDev_STM32_USART5_DevPtr;
static  SERIAL_DEV  *SerialDev_STM32_USART6_DevPtr;

/*$PAGE*/
/*
*********************************************************************************************************
*                                       SerialBSP_STM32_USARTx_ClkEn()
*
* Description : Enable device/peripheral clock.
*
* Argument(s) : perr        Pointer to variable that will receive the return error code from this function :
*
*                               SERIAL_ERR_NONE                 Device/peripheral clock enabled successfully.
*
* Return(s)   : none.
*
* Caller(s)   : SerialDrv_Open() via 'pdev->BSP_API->ClkEn()'.
*
* Note(s)     : none.
*********************************************************************************************************
*/


static  void  SerialBSP_STM32_USART1_ClkEn (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART2_ClkEn (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART3_ClkEn (SERIAL_ERR  *perr)
{
    BSP_PeriphEn(BSP_PERIPH_ID_GPIOC);                          /* Enable GPIOC clock.                                  */
    BSP_PeriphEn(BSP_PERIPH_ID_USART3);                         /* Enable UART clock.                                   */
}

static  void  SerialBSP_STM32_USART4_ClkEn (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART5_ClkEn (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART6_ClkEn (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                         SerialBSP_STM32_USARTx_ClkDis()
*
* Description : Disable device/peripheral clock.
*
* Argument(s) : perr        Pointer to variable that will receive the return error code from this function :
*
*                               SERIAL_ERR_NONE                 Device/peripheral clock disabled successfully.
*
* Return(s)   : none.
*
* Caller(s)   : SerialDrv_Close() via 'pdev->BSP_API->ClkDis()'.
*
* Note(s)     : none.
*********************************************************************************************************
*/


static  void  SerialBSP_STM32_USART1_ClkDis (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART2_ClkDis (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART3_ClkDis (SERIAL_ERR  *perr)
{
    BSP_PeriphDis(BSP_PERIPH_ID_USART3);                        /* Disable UART clock.                                   */
    
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART4_ClkDis (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART5_ClkDis (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

static  void  SerialBSP_STM32_USART6_ClkDis (SERIAL_ERR  *perr)
{
   *perr = SERIAL_ERR_NONE;
}

⌨️ 快捷键说明

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