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

📄 csp_pio.h

📁 IAR 平台ATMEL 的例程, 和说明
💻 H
字号:
/*-----------------------------------------------------------------------------
*   EUROPE TECHNOLOGIES Software Support
*------------------------------------------------------------------------------
* The software is delivered "AS IS" without warranty or condition of any
* kind, either express, implied or statutory. This includes without
* limitation any warranty or condition with respect to merchantability or
* fitness for any particular purpose, or against the infringements of
* intellectual property rights of others.
*------------------------------------------------------------------------------
*
* File Name       : csp_pio.h
* Description     : Definitions, Macros and function declarations for
*                   Ports Input/Ouput module
* Library Version : 2.00
* Module Version  : 1.XX
*
*       +----- (NEW | MODify | ADD | DELete)                                 
*       |                                                                    
*  No   |   When       Who                What               
*-----+---+----------+------------------+--------------------------------------
* 000  NEW  01/05/99   Patrice VILCHEZ    Creation
* 001  MOD  01/04/01   Olivier MAZUYER    Clean up
* 002  MOD  08/06/01   Frederic SAMSON    Clean Up
* 003  MOD  25/10/01   Christophe GARDIN  Clean Up
* 004  MOD  21/11/02   Bruno SALLE		  Modification for SmartCAN1 : 18 PIOs
                                          instead of 32
*----------------------------------------------------------------------------*/

#ifndef CSP_PIO_H
#define CSP_PIO_H


/******************************************************************************
************************** PIO Structure Definition ***************************
******************************************************************************/

/*******************************************************************************
Type: CSP_PIO_T
Description: PIO Channel Structure
Fields:
- 创CSP_REGISTER_T创  ReservedA[4] :
- 创CSP_REGISTER_T创  OER :           Output Enable Register                   
- 创CSP_REGISTER_T创  ODR :           Output Disable Register                  
- 创CSP_REGISTER_T创  OSR :           Output Status Register                   
- 创CSP_REGISTER_T创  ReservedB[5] :     
- 创CSP_REGISTER_T创  SODR :          Set Output Data Register                 
- 创CSP_REGISTER_T创  CODR :          Clear Output Data Register               
- 创CSP_REGISTER_T创  ODSR :          Output Data Status Register              
- 创CSP_REGISTER_T创  PDSR :          Pin Data Status Register                 
- 创CSP_REGISTER_T创  MDER :          Multi-Driver Enable Register             
- 创CSP_REGISTER_T创  MDDR :          Multi-Driver Disable Register            
- 创CSP_REGISTER_T创  MDSR :          Multi-Driver Status Register             
- 创CSP_REGISTER_T创  ReservedC :     
- 创CSP_REGISTER_T创  ECR :           Enable Clock Register                    
- 创CSP_REGISTER_T创  DCR :           Disable Clock Register                   
- 创CSP_REGISTER_T创  PMSR :          Power Management Status Register         
- 创CSP_REGISTER_T创  ReservedD :     
- 创CSP_REGISTER_T创  CR :            Control Register                         
- 创CSP_REGISTER_T创  ReservedE[3] :    
- 创CSP_REGISTER_T创  SR :            Status Register                          
- 创CSP_REGISTER_T创  IER :           Interrupt Enable Register                
- 创CSP_REGISTER_T创  IDR :           Interrupt Disable Register               
- 创CSP_REGISTER_T创  IMR :           Interrupt Mask Register                  
*******************************************************************************/
typedef struct
{
   CSP_REGISTER_T  ReservedA[4];
   CSP_REGISTER_T  OER;          /* Output Enable Register                   */
   CSP_REGISTER_T  ODR;          /* Output Disable Register                  */
   CSP_REGISTER_T  OSR;          /* Output Status Register                   */
   CSP_REGISTER_T  ReservedB[5];     
   CSP_REGISTER_T  SODR;         /* Set Output Data Register                 */
   CSP_REGISTER_T  CODR;         /* Clear Output Data Register               */
   CSP_REGISTER_T  ODSR;         /* Output Data Status Register              */
   CSP_REGISTER_T  PDSR;         /* Pin Data Status Register                 */
   CSP_REGISTER_T  MDER;         /* Multi-Driver Enable Register             */
   CSP_REGISTER_T  MDDR;         /* Multi-Driver Disable Register            */
   CSP_REGISTER_T  MDSR;         /* Multi-Driver Status Register             */
   CSP_REGISTER_T  ReservedC;     
   CSP_REGISTER_T  ECR;          /* Enable Clock Register                    */
   CSP_REGISTER_T  DCR;          /* Disable Clock Register                   */
   CSP_REGISTER_T  PMSR;         /* Power Management Status Register         */
   CSP_REGISTER_T  ReservedD;     
   CSP_REGISTER_T  CR;           /* Control Register                         */
   CSP_REGISTER_T  ReservedE[3];    
   CSP_REGISTER_T  SR;           /* Status Register                          */
   CSP_REGISTER_T  IER;          /* Interrupt Enable Register                */
   CSP_REGISTER_T  IDR;          /* Interrupt Disable Register               */
   CSP_REGISTER_T  IMR;          /* Interrupt Mask Register                  */
} CSP_PIO_T;


/******************************************************************************
************************** PIO Registers Definition ***************************
******************************************************************************/

/******************************************************************************
* OER, ODR, OSR,                     :
* SODR, CODR, ODSR, PDSR, MDER, MDDR : PIO Registers, Status Register and 
* MDSR, SR, IER, IDR, IMR            : Interrupt Registers
******************************************************************************/
#define PIO0   (0x01ul << 0)        /* Pin 0                                 */
#define PIO1   (0x01ul << 1)        /* Pin 1                                 */
#define PIO2   (0x01ul << 2)        /* Pin 2                                 */
#define PIO3   (0x01ul << 3)        /* Pin 3                                 */
#define PIO4   (0x01ul << 4)        /* Pin 4                                 */
#define PIO5   (0x01ul << 5)        /* Pin 5                                 */
#define PIO6   (0x01ul << 6)        /* Pin 6                                 */
#define PIO7   (0x01ul << 7)        /* Pin 7                                 */
#define PIO8   (0x01ul << 8)        /* Pin 8                                 */
#define PIO9   (0x01ul << 9)        /* Pin 9                                 */
#define PIO10  (0x01ul << 10)       /* Pin 10                                */
#define PIO11  (0x01ul << 11)       /* Pin 11                                */
#define PIO12  (0x01ul << 12)       /* Pin 12                                */
#define PIO13  (0x01ul << 13)       /* Pin 13                                */
#define PIO14  (0x01ul << 14)       /* Pin 14                                */
#define PIO15  (0x01ul << 15)       /* Pin 15                                */
#define PIO16  (0x01ul << 16)       /* Pin 16                                */
#define PIO17  (0x01ul << 17)       /* Pin 17                                */

/******************************************************************************
* ECR, DCR, PMSR : PIO Power Management Registers
******************************************************************************/
#define PIO    (0x01ul << 0)        /* PIO Clock                             */

/******************************************************************************
* CR : PIO Control Register
******************************************************************************/
#define SWRST  (0x01ul << 0)        /* PIO Software Reset                    */


/******************************************************************************
*************************** PIO Macros Definition *****************************
******************************************************************************/
/* OER, ODR, OSR : PIO Output Registers                                      */
#define CSP_PIO_SET_OER(pio, val)      ((pio)->OER = (val))    /* Enable     */
#define CSP_PIO_SET_ODR(pio, val)      ((pio)->ODR = (val))    /* Disable    */
#define CSP_PIO_GET_OSR(pio)           ((pio)->OSR)            /* Status     */

/* SODR, CODR, ODSR, PDSR : PIO Output Data Registers                        */
#define CSP_PIO_SET_SODR(pio, val)     ((pio)->SODR = (val))   /* Set        */
#define CSP_PIO_SET_CODR(pio, val)     ((pio)->CODR = (val))   /* Clear      */
#define CSP_PIO_GET_ODSR(pio)          ((pio)->ODSR)           /* Status     */
#define CSP_PIO_GET_PDSR(pio)          ((pio)->PDSR)           /* Pin Status */

/* MDER, MDDR, MDSR : PIO Multi-Driver Registers                             */
#define CSP_PIO_SET_MDER(pio, val)     ((pio)->MDER = (val))   /* Enable     */
#define CSP_PIO_SET_MDDR(pio, val)     ((pio)->MDDR = (val))   /* Disable    */
#define CSP_PIO_GET_MDSR(pio)          ((pio)->MDSR)           /* Status     */

/* ECR, DCR, PMSR : PIO Power Management Registers                           */
#define CSP_PIO_SET_ECR(pio, val)      ((pio)->ECR = (val))    /* Enable     */
#define CSP_PIO_SET_DCR(pio, val)      ((pio)->DCR = (val))    /* Disable    */
#define CSP_PIO_GET_PMSR(pio)          ((pio)->PMSR)           /* Status     */

/* CR : PIO Control Register                                                 */
#define CSP_PIO_SET_CR(pio, val)       ((pio)->CR = (val))

/* SR : PIO Status Register                                                  */
#define CSP_PIO_GET_SR(pio)            ((pio)->SR)             /* Status     */

/* IER, IDR, IMR : PIO Interrupt Registers                                   */
#define CSP_PIO_SET_IER(pio, val)      ((pio)->IER = (val))    /* Enable     */
#define CSP_PIO_SET_IDR(pio, val)      ((pio)->IDR = (val))    /* Disable    */
#define CSP_PIO_GET_IMR(pio)           ((pio)->IMR)            /* Mask       */


/******************************************************************************
********************* PIO External Functions Declaration **********************
******************************************************************************/
extern void CSP_PIOInit(CSP_PIO_T *const pio, U32_T output_pio, U32_T multidriver_pio);
extern void CSP_PIOClose(CSP_PIO_T *const pio);
extern void CSP_PIOConfigInterrupt(CSP_PIO_T *const pio,U32_T int_mode, U32_T int_mask, U32_T callback);
extern U32_T CSP_PIOGetStatus(CSP_PIO_T *const pio);
extern void CSP_PIOSet(CSP_PIO_T *const pio, U32_T pio_mask);
extern void CSP_PIOClear(CSP_PIO_T *const pio, U32_T pio_mask);


#endif   /* CSP_PIO_H */

⌨️ 快捷键说明

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