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

📄 drvpwm.c

📁 cortex-m0 LCD1602程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                    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 + -