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

📄 xspwm.c

📁 优龙pxa270平台试验程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }
    
    // Clear all bits except for duty cycle fields
    value &= PWM_DUTY_DCYCLE_MASK;
    // Write to register
    pwmRegP->DUTY = value;

    return (pwmRegP->DUTY);
}

/*
*******************************************************************************
*
* FUNCTION:         XsPwmSetFullDutyCycle
*
* DESCRIPTION:      Sets the FDCYCLE bit in the DUTY register. The values of
*                   other bit fields in the DUTY register are maintained.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*
* RETURNS:          32 bit register data with reserved/unused bits masked to
*                   zero
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            XsPwmWriteDuty
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmSetDutyCycle(UINT32 channel);
*
*******************************************************************************
*/
UINT32 XsPwmSetFullDutyCycle(UINT32 channel)
{
    volatile PwmCtrlRegsT    *pwmRegP;
    
    if (channel == 1)
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }

    // Write data to register and return
    return (pwmRegP->DUTY |= PWM_DUTY_FDCYCLE);
}

/******************* CTRL Register Access Functions **************************/
/*
*******************************************************************************
*
* FUNCTION:         XsPwmReadCtrl
*
* DESCRIPTION:      Reads the CTRL register.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*
* RETURNS:          32 bit register data with reserved/unused bits masked to
*                   zero
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmReadCtrl(UINT32 channel);
*
*******************************************************************************
*/
UINT32 XsPwmReadCtrl(UINT32 channel)
{
    volatile PwmCtrlRegsT *pwmRegs;
    UINT32 regData;
    
    if (channel == 1)
    {
        pwmRegs = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegs = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    
    // Read and format the register data
    regData = pwmRegs->CTRL;
    // Mask value for bits in register
    regData &= PWM_CTRL_MASK;

    return (regData);
}

/*
*******************************************************************************
*
* FUNCTION:         XsPwmWriteCtrl
*
* DESCRIPTION:      Writes the CTRL register with a control value.  The values 
*                   in the reserved fields are maintained.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*                   32 bit value to be written
*
* RETURNS:          32 bit register data with reserved/unused bits masked to
*                   zero
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmWriteCtrl(UINT32 channel, UINT32 value);
*
*******************************************************************************
*/
UINT32 XsPwmWriteCtrl(UINT channel, UINT32 value)
{
    volatile PwmCtrlRegsT    *pwmRegP;
    
    if (channel == 1)
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }
    
    // Clear reserved bit fields
    value &= PWM_CTRL_MASK;
    // Write data to register and return
    return (pwmRegP->CTRL = value);
}

/*
*******************************************************************************
*
* FUNCTION:         XsPwmSetCtrlPrescale
*
* DESCRIPTION:      Writes the PRESCALE fields of the CTRL register with a      
*                   control value.  The values in the other bit fields are
*                   maintained.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*                   32 bit value to be written
*
* RETURNS:          32 bit register data
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmSetCtrlPrescale
*                                       (UINT32 channel, UINT32 value);
*
*******************************************************************************
*/
UINT32 XsPwmSetCtrlPrescale(UINT32 channel, UINT32 value)
{
    volatile PwmCtrlRegsT    *pwmRegP;
    
    if (channel == 1)
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }
    
    // Clear all bits except for prescale (PRESCALE) fields
    value &= PWM_CTRL_PRESCALE_MASK;
    // Write value to PRESCALE register and return
    return (pwmRegP->CTRL = value);
}

/*
*******************************************************************************
*
* FUNCTION:         XsPwmSetCtrlAbruptShutdown
*
* DESCRIPTION:      Set the CTRL register so that PWM is in abrupt shutdown
*                   on Sleep Mode.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*
* RETURNS:          32 bit register data with reserved/unused bits masked to
*                   zero
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmSetCtrlAbruptShutdown(UINT32 channel);
*
*******************************************************************************
*/
UINT32 XsPwmSetCtrlAbruptShutdown(UINT32 channel)
{
    volatile PwmCtrlRegsT    *pwmRegP;
    
    if (channel == 1)
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }

    // Write the Abrupt shutdown bit and return
    return (pwmRegP->CTRL |= PWM_CTRL_PWM_SD);
}

/*
*******************************************************************************
*
* FUNCTION:         XsPwmSetCtrlGracefulShutdown
*
* DESCRIPTION:      Set the CTRL register so that PWM is in graceful shutdown
*                   on Sleep Mode.
*
* INPUT PARAMETERS: 32 bit PWM channel number
*
* RETURNS:          32 bit register data with reserved/unused bits masked to
*                   zero
*
* GLOBAL EFFECTS:   None
*
* ASSUMPTIONS:      If the requested channel number is not 1, channel 0 is
*                   assumed.
*
* CALLS:            None
*
* CALLED BY:        Anyone
*
* PROTOTYPE:        UINT32 XsPwmSetCtrlGracefulShutdown(UINT32 channel);
*
*******************************************************************************
*/
UINT32 XsPwmSetCtrlGracefulShutdown(UINT32 channel)
{
    volatile PwmCtrlRegsT    *pwmRegP;
    
    if (channel == 1)
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM1_REG_BASE;
    }
    else
    {
        pwmRegP = (volatile PwmCtrlRegsT *)PWM0_REG_BASE;
    }
    
    // Clear the Abrupt shutdown bit and return
    return (pwmRegP->CTRL &= ~PWM_CTRL_PWM_SD);
}

⌨️ 快捷键说明

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