打印
[demo程序]

NV32F100x 库文件acmp.c中文注释

[复制链接]
676|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jp_chen|  楼主 | 2017-7-26 16:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/******************************************************************************
*
* [url=home.php?mod=space&uid=247401]@brief[/url] providing APIs for configuring ACMP.
*
*******************************************************************************
*
* provide APIs for configuring ACMP
******************************************************************************/
#include "common.h"
#include "acmp.h"
/******************************************************************************
* Global variables
******************************************************************************/

/******************************************************************************
* Constants and macros
******************************************************************************/

/******************************************************************************
* Local types
******************************************************************************/

/******************************************************************************
* Local function prototypes
******************************************************************************/

/******************************************************************************
* Local variables
******************************************************************************/

ACMP_CallbackPtr ACMP_Callback[2] = {(ACMP_CallbackPtr)NULL};

/******************************************************************************
* Local functions
******************************************************************************/
/******************************************************************************
* Global functions
******************************************************************************/
void ACMP0_Isr(void);
void ACMP1_Isr(void);

/******************************************************************************
* ACMP api list.
*
*//*! @addtogroup acmp_api_list
* @{
*******************************************************************************/

/*****************************************************************************//*!
*
* [url=home.php?mod=space&uid=72445]@[/url] 按每个控制领域初始化ACMP
*        
* @ 参数  pACMPx        指向其中一个ACMP寄存器的基地址
* @ 参数   pConfig       指向配置结构体.  
*
* @ 无返回
*
*****************************************************************************/
void ACMP_Init(ACMP_Type *pACMPx, ACMP_ConfigType *pConfig)
{
    if(ACMP0 == pACMPx)
    {   
        /*使能APCM总线时钟*/
        SIM->SCGC |= SIM_SCGC_ACMP0_MASK;

        /*  使能APCM中断*/
        if(pConfig->sCtrlStatus.bits.bIntEn)
            NVIC_EnableIRQ(ACMP0_IRQn);
    }
    else
    {
        SIM->SCGC |= SIM_SCGC_ACMP1_MASK;
        if(pConfig->sCtrlStatus.bits.bIntEn)
            NVIC_EnableIRQ(ACMP1_IRQn);            
    }
    /*ACMP正输入和负输入的选择不必相同*/
    pACMPx->C0 = pConfig->sPinSelect.byte;  /*选择ACMP的输入*/
    ACMP_ConfigDAC(pACMPx, &pConfig->sDacSet );  /*设置ACMP内部DAC*/
    //pACMPx->C1 = pConfig->sDacSet.byte;     
    pACMPx->C2 = pConfig->sPinEnable.byte;    /*ACMP输入引脚使能*/
    pACMPx->CS = pConfig->sCtrlStatus.byte; /*配置ACMP控制和状态寄存器*/
}


/*****************************************************************************//*!
*
* @ 向ACMPx_C1寄存器写数据,配置ACMP内部DAC.
*        
* @ 参数   pACMPx      指向其中一个ACMP寄存器基地址.
* @ 参数   pDACConfig   指向 ACMP DAC 控制结构体.
*
* @ 无返回.
*
*
*****************************************************************************/
void ACMP_ConfigDAC(ACMP_Type *pACMPx, ACMP_DACType *pDACConfig)
{
    pACMPx->C1 = pDACConfig->byte;  
}

/*****************************************************************************//*!
*
* @ 复位ACMP模块,使其恢复到默认状态
*        
* @ 参数   pACMPx     指向其中一个ACMP寄存器基地址.
*
* @ 无返回
*
*
*****************************************************************************/
void ACMP_DeInit(ACMP_Type *pACMPx)
{
    if(ACMP0 == pACMPx)
    {   
        if(pACMPx->CS & ACMP_CS_ACIE_MASK)  
            NVIC_DisableIRQ(ACMP0_IRQn);    /*禁用ACMP中断*/
    }
    else
    {
        if(pACMPx->CS & ACMP_CS_ACIE_MASK)
            NVIC_DisableIRQ(ACMP1_IRQn);            
    }
    /*寄存器恢复默认值*/
    pACMPx->CS = 0;
    pACMPx->C0 = 0;
    pACMPx->C1 = 0;
    pACMPx->C2 = 0;
   
                /*禁用ACMP模块的总线时钟*/
    if(ACMP0 == pACMPx)
    {   
        SIM->SCGC &= ~SIM_SCGC_ACMP0_MASK;
    }
    else
    {
        SIM->SCGC &= ~SIM_SCGC_ACMP1_MASK;           
    }
}

/*****************************************************************************//*!
*
* @  设置ACMP的回调函数,通过中断服务函数调用
*        
* @ 参数  pACMPx       指向ACMP模块基地址
* @ 参数   pfnCallback  指向回调函数
*
* @ 无返回.
*
*
*****************************************************************************/
void ACMP_SetCallback(ACMP_Type *pACMPx, ACMP_CallbackPtr pfnCallback)
{
    if(ACMP0 == pACMPx)
    {
        ACMP_Callback[0] = pfnCallback;
    }
    else
    {
        ACMP_Callback[1] = pfnCallback;
    }
}

/*! @} End of acmp_api_list                                                  */


/*****************************************************************************//*!
*
* @   ACMP0 中断服务函数.
*        
* @ 参数  无.
*
* @ 无返回.
*
*
*****************************************************************************/
void ACMP0_Isr(void)
{

    if(ACMP_Callback[0])
    {
        ACMP_Callback[0]();             /*调用回调函数*/
    }
}

/*****************************************************************************//*!
*
* @   ACMP1 中断函数.
*        
* @ 参数无
*
* @ 无返回
*
* @ Pass/ Fail criteria: none.
*
*****************************************************************************/
void ACMP1_Isr(void)
{

    if(ACMP_Callback[1])
    {
        ACMP_Callback[1]();             /*调用回调函数*/
    }
}



相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

113

帖子

0

粉丝