[demo程序] NV32 模拟比较器使用

[复制链接]
 楼主| hanzhen654 发表于 2020-3-31 20:48 | 显示全部楼层 |阅读模式
初始化ACMP模块
  1. void ACMP_Init(ACMP_Type *pACMPx, ACMP_ConfigType *pConfig)
  2. {
  3.     if(ACMP0 == pACMPx)
  4.     {   
  5.         /* 使能ACMP模块的总线时钟 */
  6.         SIM->SCGC |= SIM_SCGC_ACMP0_MASK;

  7.         /* 使能ACMP中断 */
  8.         if(pConfig->sCtrlStatus.bits.bIntEn)
  9.             NVIC_EnableIRQ(ACMP0_IRQn);
  10.     }
  11.     else
  12.     {
  13.         SIM->SCGC |= SIM_SCGC_ACMP1_MASK;
  14.         if(pConfig->sCtrlStatus.bits.bIntEn)
  15.             NVIC_EnableIRQ(ACMP1_IRQn);            
  16.     }
  17.     /*选择ACMP正输入和负输入,正输入和负输入引脚不同*/
  18.     pACMPx->C0 = pConfig->sPinSelect.byte;
  19.     ACMP_ConfigDAC(pACMPx, &pConfig->sDacSet );
  20.     //pACMPx->C1 = pConfig->sDacSet.byte;
  21.     pACMPx->C2 = pConfig->sPinEnable.byte;
  22.     pACMPx->CS = pConfig->sCtrlStatus.byte;
  23. }


 楼主| hanzhen654 发表于 2020-3-31 20:49 | 显示全部楼层
配置ACMP控制寄存器1
  1. void ACMP_ConfigDAC(ACMP_Type *pACMPx, ACMP_DACType *pDACConfig)
  2. {
  3.     pACMPx->C1 = pDACConfig->byte;  
  4. }


 楼主| hanzhen654 发表于 2020-3-31 21:23 | 显示全部楼层
复位ACMP模块
  1. void ACMP_DeInit(ACMP_Type *pACMPx)
  2. {
  3.     if(ACMP0 == pACMPx)
  4.     {   
  5.         if(pACMPx->CS & ACMP_CS_ACIE_MASK)
  6.             NVIC_DisableIRQ(ACMP0_IRQn);
  7.     }
  8.     else
  9.     {
  10.         if(pACMPx->CS & ACMP_CS_ACIE_MASK)
  11.             NVIC_DisableIRQ(ACMP1_IRQn);            
  12.     }
  13.    
  14.     pACMPx->CS = 0;
  15.     pACMPx->C0 = 0;
  16.     pACMPx->C1 = 0;
  17.     pACMPx->C2 = 0;
  18.    
  19.     if(ACMP0 == pACMPx)
  20.     {   
  21.         SIM->SCGC &= ~SIM_SCGC_ACMP0_MASK;
  22.     }
  23.     else
  24.     {
  25.         SIM->SCGC &= ~SIM_SCGC_ACMP1_MASK;           
  26.     }
  27. }


 楼主| hanzhen654 发表于 2020-3-31 21:25 | 显示全部楼层
设置ACMP回调函数,通过中断服务函数调用回调函数
  1. void ACMP_SetCallback(ACMP_Type *pACMPx, ACMP_CallbackPtr pfnCallback)
  2. {
  3.     if(ACMP0 == pACMPx)
  4.     {
  5.         ACMP_Callback[0] = pfnCallback;
  6.     }
  7.     else
  8.     {
  9.         ACMP_Callback[1] = pfnCallback;
  10.     }
  11. }


 楼主| hanzhen654 发表于 2020-3-31 22:17 | 显示全部楼层
ACMP0 中断服务函数.
  1. void ACMP0_Isr(void)
  2. {
  3.     if(ACMP_Callback[0])
  4.     {
  5.         ACMP_Callback[0]();             /*调用回调函数*/
  6.     }
  7. }


 楼主| hanzhen654 发表于 2020-3-31 22:25 | 显示全部楼层
ACMP1 中断服务函数
void ACMP1_Isr(void)
{
    if(ACMP_Callback[1])
    {
        ACMP_Callback[1]();             /* 调用回调函数*/
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

1766

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

73

主题

1766

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部