📄 xspwm.c
字号:
{
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 + -