📄 drvpwm.c
字号:
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & CCR_MASK) | BIT2);
else
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & ~(BIT4 | BIT20)) | BIT2);
}
g_sDrvPWMBHandler.pfnCAP0CallBack = pfncallback;
break;
case DRVPWM_TIMER5:
PWMB->PIER.PWMIE1 = 1;
g_sDrvPWMBHandler.pfnPWM1CallBack = pfncallback;
break;
case DRVPWM_CAP5:
if (Rflag)
{
if (s_i32Option)
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & CCR_MASK) | BIT17);
else
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & ~(BIT4 | BIT20)) | BIT17);
}
if (Fflag)
{
if (s_i32Option)
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & CCR_MASK) | BIT18);
else
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & ~(BIT4 | BIT20)) | BIT18);
}
g_sDrvPWMBHandler.pfnCAP1CallBack = pfncallback;
break;
case DRVPWM_TIMER6:
PWMB->PIER.PWMIE2 = 1;
g_sDrvPWMBHandler.pfnPWM2CallBack = pfncallback;
break;
case DRVPWM_CAP6:
if (Rflag)
{
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) | BIT1);
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) | BIT1);
}
if (Fflag)
{
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) | BIT2);
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) | BIT2);
}
g_sDrvPWMBHandler.pfnCAP2CallBack = pfncallback;
break;
case DRVPWM_TIMER7:
PWMB->PIER.PWMIE3 = 1;
g_sDrvPWMBHandler.pfnPWM3CallBack = pfncallback;
break;
case DRVPWM_CAP7:
if (Rflag)
{
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) | BIT17);
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) | BIT17);
}
if (Fflag)
{
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) | BIT18);
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) | BIT18);
}
g_sDrvPWMBHandler.pfnCAP3CallBack = pfncallback;
break;
}
if (u8Timer & 0x04)
{
NVIC_SetPriority(PWMB_IRQn, (1<<__NVIC_PRIO_BITS) - 2);
NVIC_EnableIRQ(PWMB_IRQn);
}
else
{
NVIC_SetPriority(PWMA_IRQn, (1<<__NVIC_PRIO_BITS) - 2);
NVIC_EnableIRQ(PWMA_IRQn);
}
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvPWM_DisableInt */
/* */
/* Parameters: */
/* u8Timer - [in] DRVPWM_TIMER0 / DRVPWM_TIMER1 / DRVPWM_TIMER2 / DRVPWM_TIMER3 */
/* DRVPWM_TIMER4 / DRVPWM_TIMER5 / DRVPWM_TIMER6 / DRVPWM_TIMER7 */
/* DRVPWM_CAP0 / DRVPWM_CAP1 / DRVPWM_CAP2 / DRVPWM_CAP3 */
/* DRVPWM_CAP4 / DRVPWM_CAP5 / DRVPWM_CAP6 / DRVPWM_CAP7 */
/* */
/* Returns: */
/* None */
/* */
/* Description: */
/* This function is used to disable the PWM0~7 timer/capture interrupt */
/*---------------------------------------------------------------------------------------------------------*/
void DrvPWM_DisableInt(uint8_t u8Timer)
{
switch(u8Timer)
{
case DRVPWM_TIMER0:
PWMA->PIER.PWMIE0 = 0;
outp32(&PWMA->PIIR, BIT0);
g_sDrvPWMAHandler.pfnPWM0CallBack = NULL;
break;
case DRVPWM_TIMER1:
PWMA->PIER.PWMIE1 = 0;
outp32(&PWMA->PIIR, BIT1);
g_sDrvPWMAHandler.pfnPWM1CallBack = NULL;
break;
case DRVPWM_TIMER2:
PWMA->PIER.PWMIE2 = 0;
outp32(&PWMA->PIIR, BIT2);
g_sDrvPWMAHandler.pfnPWM2CallBack = NULL;
break;
case DRVPWM_TIMER3:
PWMA->PIER.PWMIE3 = 0;
outp32(&PWMA->PIIR, BIT3);
g_sDrvPWMAHandler.pfnPWM3CallBack = NULL;
break;
case DRVPWM_TIMER4:
PWMB->PIER.PWMIE0 = 0;
outp32(&PWMB->PIIR, BIT0);
g_sDrvPWMBHandler.pfnPWM0CallBack = NULL;
break;
case DRVPWM_TIMER5:
PWMB->PIER.PWMIE1 = 0;
outp32(&PWMB->PIIR, BIT1);
g_sDrvPWMBHandler.pfnPWM1CallBack = NULL;
break;
case DRVPWM_TIMER6:
PWMB->PIER.PWMIE2 = 0;
outp32(&PWMB->PIIR, BIT2);
g_sDrvPWMBHandler.pfnPWM2CallBack = NULL;
break;
case DRVPWM_TIMER7:
PWMB->PIER.PWMIE3 = 0;
outp32(&PWMB->PIIR, BIT3);
g_sDrvPWMBHandler.pfnPWM3CallBack = NULL;
break;
case DRVPWM_CAP0:
if (s_i32Option)
outp32(&PWMA->CCR0, (inp32(&PWMA->CCR0) & CCR_MASK) & ~(BIT1 | BIT2));
else
outp32(&PWMA->CCR0, (inp32(&PWMA->CCR0) & ~(BIT4 | BIT20)) & ~(BIT1 | BIT2));
g_sDrvPWMAHandler.pfnCAP0CallBack = NULL;
break;
case DRVPWM_CAP1:
if (s_i32Option)
outp32(&PWMA->CCR0, (inp32(&PWMA->CCR0) & CCR_MASK) & ~(BIT17 | BIT18));
else
outp32(&PWMA->CCR0, (inp32(&PWMA->CCR0) & ~(BIT4 | BIT20)) & ~(BIT17 | BIT18));
g_sDrvPWMAHandler.pfnCAP1CallBack = NULL;
break;
case DRVPWM_CAP2:
if (s_i32Option)
outp32(&PWMA->CCR2, (inp32(&PWMA->CCR2) & CCR_MASK) & ~(BIT1 | BIT2));
else
outp32(&PWMA->CCR2, (inp32(&PWMA->CCR2) & ~(BIT4 | BIT20)) & ~(BIT1 | BIT2));
g_sDrvPWMAHandler.pfnCAP2CallBack = NULL;
break;
case DRVPWM_CAP3:
if (s_i32Option)
outp32(&PWMA->CCR2, (inp32(&PWMA->CCR2) & CCR_MASK) & ~(BIT17 | BIT18));
else
outp32(&PWMA->CCR2, (inp32(&PWMA->CCR2) & ~(BIT4 | BIT20)) & ~(BIT17 | BIT18));
g_sDrvPWMAHandler.pfnCAP3CallBack = NULL;
break;
case DRVPWM_CAP4:
if (s_i32Option)
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & CCR_MASK) & ~(BIT1 | BIT2));
else
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & ~(BIT4 | BIT20)) & ~(BIT1 | BIT2));
g_sDrvPWMBHandler.pfnCAP0CallBack = NULL;
break;
case DRVPWM_CAP5:
if (s_i32Option)
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & CCR_MASK) & ~(BIT17 | BIT18));
else
outp32(&PWMB->CCR0, (inp32(&PWMB->CCR0) & ~(BIT4 | BIT20)) & ~(BIT17 | BIT18));
g_sDrvPWMBHandler.pfnCAP1CallBack = NULL;
break;
case DRVPWM_CAP6:
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) & ~(BIT1 | BIT2));
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) & ~(BIT1 | BIT2));
g_sDrvPWMBHandler.pfnCAP2CallBack = NULL;
break;
case DRVPWM_CAP7:
if (s_i32Option)
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & CCR_MASK) & ~(BIT17 | BIT18));
else
outp32(&PWMB->CCR2, (inp32(&PWMB->CCR2) & ~(BIT4 | BIT20)) & ~(BIT17 | BIT18));
g_sDrvPWMBHandler.pfnCAP3CallBack = NULL;
break;
}
}
/*---------------------------------------------------------------------------------------------------------*/
/* Function: DrvPWM_ClearInt */
/* */
/* Parameters: */
/* u8Timer - [in] DRVPWM_TIMER0 / DRVPWM_TIMER1 / DRVPWM_TIMER2 / DRVPWM_TIMER3 */
/* DRVPWM_TIMER4 / DRVPWM_TIMER5 / DRVPWM_TIMER6 / DRVPWM_TIMER7 */
/* DRVPWM_CAP0 / DRVPWM_CAP1 / DRVPWM_CAP2 / DRVPWM_CAP3 */
/* DRVPWM_CAP4 / DRVPWM_CAP5 / DRVPWM_CAP6 / DRVPWM_CAP7 */
/* */
/* Returns: */
/* None */
/* */
/* Description: */
/* This function is used to clear the PWM0~7 timer/capture interrupt flag */
/*---------------------------------------------------------------------------------------------------------*/
void DrvPWM_ClearInt(uint8_t u8Timer)
{
switch (u8Timer)
{
case DRVPWM_TIMER0:
case DRVPWM_TIMER1:
case DRVPWM_TIMER2:
case DRVPWM_TIMER3:
outp32(&PWMA->PIIR, (1 << u8Timer) );
break;
case DRVPWM_TIMER4:
case DRVPWM_TIMER5:
case DRVPWM_TIMER6:
case DRVPWM_TIMER7:
outp32(&PWMB->PIIR, (1 << (u8Timer-DRVPWM_TIMER4)) );
break;
case DRVPWM_CAP0:
if (s_i32Option)
outp32(&PWMA->CCR0, inp32(&PWMA->CCR0) & (CCR_MASK | BIT4));
else
outp32(&PWMA->CCR0, inp32(&PWMA->CCR0) & ~BIT20);
break;
case DRVPWM_CAP1:
if (s_i32Option)
outp32(&PWMA->CCR0, inp32(&PWMA->CCR0) & (CCR_MASK | BIT20));
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -