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

📄 ma_pwm0.c

📁 NXP LPC系列AMR7的开发程序源码(LCD
💻 C
字号:

/*
*****************************************************************************
**
**      Project     : My project
**
**      Component   : LPC2106 (LPC2106)
**
**      Modulename  : PWM0
**
**      Filename    : ma_pwm0.c
**
**      Abstract    : This file implements a device driver for the PWM0 
**                    module.
**
**      Compiler    : IAR C compiler
**
**      Date        : 2004-05-26 17:21:26
**
**      License no. : 9503-663-863-6224     Ivan
**
**      Warning     : This file has been automatically generated.
**                    Do not edit this file if you intend to regenerate it.
**
**      This device driver was created by IAR MakeApp version 
**      4.02A (NXP LPC210x: 4.00C) for the NXP LPC210x series of
**      microcontrollers.
**
**      (c)Copyright 2004 IAR Systems.
**      Your rights to this file are explained in the IAR MakeApp 
**      License Agreement. All other rights reserved.
**
*****************************************************************************
*/

/*
**===========================================================================
**  1       GENERAL
**  1.1     Revisions
**
**  Please read the IAR MakeApp for NXP LPC210x readme file 
**  
**
**===========================================================================
*/

/*
**===========================================================================
**  1.2     References
** 
**  No   Identification          Name or Description
**  ==   ===================     ================================
**
**  1    02/Oct/2003             NXP LPC210x Hardware Manual
** 
**===========================================================================
*/

/*
**===========================================================================
**  2.      INCLUDE FILES
**  2.1     Standard include files
**===========================================================================
*/

/*
**===========================================================================
**  2.2     Application include files
**===========================================================================
*/

#include "usercode.h"   /* Usercode macros (see <template.h>) */
#include "ma_tgt.h"     /* Target specific header file */
#include "ma_sfr.h"     /* Special function register bitfield macros */
#include "iolpc210x.h"  /* Defines Special function registers */

#include "ma_pwm0.h"     /* PWM0 Module driver header file */

/*
**===========================================================================
**  3.      DECLARATIONS
**  3.1     Internal constants
**===========================================================================
*/

#define MA_PWMTCR_PWM0         0x00000000  /* PWM Timer Control Register */
#define MA_PWMTCR_PWM0_MASK    0x0000000B  /* Used bits */
#define MA_PWMTC_PWM0          0x00000000  /* PWM Timer Counter */
#define MA_PWMTC_PWM0_MASK     0xFFFFFFFF  /* Used bits */
#define MA_PWMPR_PWM0          0x00000000  /* PWM Prescale Register */
#define MA_PWMPR_PWM0_MASK     0xFFFFFFFF  /* Used bits */
#define MA_PWMPC_PWM0          0x00000000  /* PWM Prescale Counter */
#define MA_PWMPC_PWM0_MASK     0xFFFFFFFF  /* Used bits */
#define MA_PWMMCR_PWM0         0x00000000  /* PWM Match Control Register */
#define MA_PWMMCR_PWM0_MASK    0x001FFFFF  /* Used bits */
#define MA_PWMMR0_PWM0         0x00000000  /* PWM Match Register 0 */
#define MA_PWMMR0_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR1_PWM0         0x00000000  /* PWM Match Register 1 */
#define MA_PWMMR1_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR2_PWM0         0x00000000  /* PWM Match Register 2 */
#define MA_PWMMR2_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR3_PWM0         0x00000000  /* PWM Match Register 3 */
#define MA_PWMMR3_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR4_PWM0         0x00000000  /* PWM Match Register 4 */
#define MA_PWMMR4_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR5_PWM0         0x00000000  /* PWM Match Register 5 */
#define MA_PWMMR5_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMMR6_PWM0         0x00000000  /* PWM Match Register 6 */
#define MA_PWMMR6_PWM0_MASK    0xFFFFFFFF  /* Used bits */
#define MA_PWMPCR_PWM0         0x00000000  /* PWM Control Register */
#define MA_PWMPCR_PWM0_MASK    0x00007E7E  /* Used bits */
#define MA_PWMLER_PWM0         0x00000000  /* PWM Latch Enable Register */
#define MA_PWMLER_PWM0_MASK    0x0000007F  /* Used bits */

/*
**===========================================================================
**  3.2     Internal macros
**===========================================================================
*/

/*
**===========================================================================
**  3.3     Internal type definitions
**===========================================================================
*/

/*
**===========================================================================
**  3.4     Global variables (declared as 'extern' in some header file)
**===========================================================================
*/

/*
**===========================================================================
**  3.5     Internal function prototypes (defined in Section 5)
**===========================================================================
*/

/*
**===========================================================================
**  3.6     Internal variables
**===========================================================================
*/

/*
**===========================================================================
**  4.      GLOBAL FUNCTIONS (declared as 'extern' in some header file)
**===========================================================================
*/



void MA_Init_PWM0( void ) 
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Initialises the PWM0 module. Only sets those registers with values 
**      not equal to the power-on reset values. PWM is not started by 
**      this function. Use MA_Start_PWM0 to start.
**
**  Parameters:
**      None
**
**  Returns:
**      None
**
**---------------------------------------------------------------------------
*/
{
    /*--- Handle user code on function entry ---*/
    ENTER_MA_INIT_PWM0;
            
    /*--- Initialise registers ---*/


    /*--- Handle user code on function exit ---*/
    EXIT_MA_INIT_PWM0;
    
} /* MA_Init_PWM0 */





void MA_Reset_PWM0( void ) 
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Resets the PWM0 module. Sets all registers. PWM is not started by 
**      this function. Use MA_Start_PWM0 to start.
**
**  Parameters:
**      None
**
**  Returns:
**      None
**
**---------------------------------------------------------------------------
*/
{    
    U32 IntSrc;

    /*--- Handle user code on function entry ---*/
    ENTER_MA_RESET_PWM0;
                
    /*--- Initialise registers ---*/
    PWMMR0   = MA_PWMMR0_PWM0;
    PWMMR1   = MA_PWMMR1_PWM0;
    PWMMR2   = MA_PWMMR2_PWM0;
    PWMMR3   = MA_PWMMR3_PWM0;
    PWMMR4   = MA_PWMMR4_PWM0;
    PWMMR5   = MA_PWMMR5_PWM0;
    PWMMR6   = MA_PWMMR6_PWM0;

    PWMPR    = MA_PWMPR_PWM0;
    PWMTCR   = ( PWMTCR & ~MA_PWMTCR_PWM0_MASK ) | MA_PWMTCR_PWM0;
    PWMMCR   = ( PWMMCR & ~MA_PWMMCR_PWM0_MASK ) | MA_PWMMCR_PWM0;
    PWMPCR   = ( PWMPCR & ~MA_PWMPCR_PWM0_MASK ) | MA_PWMPCR_PWM0;

    /*--- Reset Interrupt flags ---*/
    IntSrc = PWMIR;
    PWMIR  = (IntSrc & 0x70f);

    PWMLER = 0;
    PWMTC = 0;
    PWMPC = 0;

    /*--- Handle user code on function exit ---*/
    EXIT_MA_RESET_PWM0;
       
} /* MA_Reset_PWM0 */





S8 MA_Start_PWM0( U8 Reset ) 
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Start PWM0. Optionally, the PWM counter can be cleared before 
**      the PWM is started.
**
**  Parameters:
**      Reset       0 = Do not reset PWM before start
**                  1 = Reset PWM value before start
**
**  Returns:
**      MA_OK
**
**---------------------------------------------------------------------------
*/
{
    /*--- Handle user code on function entry ---*/
    ENTER_MA_START_PWM0;

    /*--- Reset PWM first? ---*/
    if( Reset )
    {
    PWMTCR_bit.CR = 1;    /* Reset */
    PWMTCR_bit.CR = 0;    /* Release Reset */          
    }

    /*--- Start PWM0 ---*/
    PWMTCR_bit.CE = 1;      
         
    /*--- Handle user code on function exit ---*/
    EXIT_MA_START_PWM0;
    
    return MA_OK;
    
} /* MA_Start_PWM0 */





S8 MA_Stop_PWM0( void ) 
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Stop PWM0.
**
**  Parameters:
**      None
**
**  Returns:
**      MA_OK
**
**---------------------------------------------------------------------------
*/
{
    /*--- Handle user code on function entry ---*/
    ENTER_MA_STOP_PWM0;
    
    /*--- Stop PWM0 ---*/
    PWMTCR_bit.CE = 0;      
   
    /*--- Handle user code on function exit ---*/
    EXIT_MA_STOP_PWM0;
    
    return MA_OK;
    
} /* MA_Stop_PWM0 */





S8 MA_Set_PWM0( U8 Channel, U8 EnableLatch, U32 Value ) 
/*
**---------------------------------------------------------------------------
**
**  Abstract:
**      Set the selected PWM channel match register.
**
**
**  Parameters:
**      Channel     The PWM channel to set (0-6)
**      EnableLatch Enables use of new PWM match values (bit 0 to 6)
**      Value       The value to set
**
**  Returns:
**      MA_ERROR    If illegal channel number was given
**      MA_OK       Otherwise
**
**---------------------------------------------------------------------------
*/
{
    S8 ReturnCode = MA_OK;
    
    /*--- Handle user code on function entry ---*/
    ENTER_MA_SET_PWM0;
    
    /*--- Handle correct channel ---*/
    switch( Channel )
    {
    case 0:
        PWMMR0 = Value;
        break;
    case 1:
        PWMMR1 = Value;
        break;
    case 2:
        PWMMR2 = Value;
        break;
    case 3:
        PWMMR3 = Value;
        break;
    case 4:
        PWMMR4 = Value;
        break;
    case 5:
        PWMMR5 = Value;
        break;
    case 6:
        PWMMR6 = Value;
        break;
      
    default:
        /*--- Illegal channel ---*/
        ReturnCode = MA_ERROR;
        break;
    }

    if( ReturnCode == MA_OK )
    {
        /*--- Update Latch enable register ---*/
        PWMLER = (EnableLatch & 0x7f);
    }
       
    /*--- Handle user code on function exit ---*/
    EXIT_MA_SET_PWM0;
    
    return ReturnCode;
    
} /* MA_Set_PWM0 */






/*
**===========================================================================
**  5.      INTERNAL FUNCTIONS (declared in Section 3.5)
**===========================================================================
*/

/*
**===========================================================================
** END OF FILE
**===========================================================================
*/ 



⌨️ 快捷键说明

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