📄 ma_pwm0.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 + -