你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32l053的comparator驱动及中断

[复制链接]
stary666 发布时间:2015-4-9 15:57
uint16_t
ComparatorInitial(void)
{
    uint32_t u32_StsCheckimeOut;

    GPIOPinInitial(LOOP_POSITIVE_ISOLLATED_MONITOR_PORT, LOOP_POSITIVE_ISOLLATED_MONITOR_PIN_NUMBER, GPIO_MOD_ANALOG_FUNCTION, GPIO_NOPUPD);

    /* Enable the VREFINT by setting EN_VREFINT bit in the CFGR3 register */
    RCC->APB2ENR      |= (RCC_APB2ENR_SYSCFGEN);
    SYSCFG->CFGR3     |= SYSCFG_CFGR3_EN_BGAP;
    /* Enable the Buffer for the COMP by setting EN_VREFINT bit and the ENBUFLP_VREFINT_COMP in the CFGR3 register */
    SYSCFG->CFGR3     |= (SYSCFG_CFGR3_ENBUFLP_BGAP_COMP | SYSCFG_CFGR3_EN_BGAP);
// CLEAR CSR
    COMP2->CSR         =  0;
    COMP2->CSR        |= (COMP_CSR_COMP2INPSEL_PA3);
    #if ((LOOP_POSITIVE_ISOLLATED_MONITOR_PORT == GPIO_A) && (LOOP_POSITIVE_ISOLLATED_MONITOR_PIN_NUMBER == 3))
    COMP2->CSR        |= (COMP_CSR_COMP2INPSEL_PA3 | COMP_CSR_COMP2INNSEL_VREFINT_3_DIV_4);
    #elif ((LOOP_POSITIVE_ISOLLATED_MONITOR_PORT == GPIO_B) && (LOOP_POSITIVE_ISOLLATED_MONITOR_PIN_NUMBER == 4))
    COMP2->CSR        |= (COMP_CSR_COMP2INPSEL_PB4 | COMP_CSR_COMP2INNSEL_VREFINT_DIV4);
    #else
    COMP2->CSR        |= (COMP_CSR_COMP2INPSEL_PA3 | COMP_CSR_COMP2INNSEL_VREFINT_3_DIV_4);
    #endif
    COMP2->CSR        |= COMP_CSR_COMP2SPEED;
    COMP2->CSR        &=  (~COMP_CSR_COMPxEN);
    EXTI->FTSR        |= COMP_EXTI_LINE_COMP2_EVENT;
    EXTI->RTSR        |= COMP_EXTI_LINE_COMP2_EVENT;
    EXTI->IMR         |= COMP_EXTI_LINE_COMP2_EVENT;
    EXTI->PR          |= COMP_EXTI_LINE_COMP2_EVENT;
    // VREFINT Check
    /* VREFINT reference for ADC enable bit*/
    SYSCFG->CFGR3     |= (SYSCFG_CFGR3_ENBUF_BGAP_ADC);
    u32_StsCheckimeOut = GET_SYSTEM_TICK_VALUE();

    while (RESET == (SYSCFG->CFGR3  &= (~SYSCFG_VREFINT_ADC_RDYF)))
    {
        if (GET_SYSTEM_TICK_ECLIPSE(u32_StsCheckimeOut) > CHECK_STATUS_TIMEROUT_TICK)
        {
            return ERROR;
        }
    }

    while (RESET == (SYSCFG->CFGR3  &= (~SYSCFG_CFGR3_VREFINT_COMP_RDYF)))
    {
        if (GET_SYSTEM_TICK_ECLIPSE(u32_StsCheckimeOut) > CHECK_STATUS_TIMEROUT_TICK)
        {
            return ERROR;
        }
    }

    /*Configure the NVIC for COMP2 */
    NVIC_SetPriority(ADC1_COMP_IRQn, INTERRUPT_PRIORITY_COMPARATOR);
    NVIC_EnableIRQ(ADC1_COMP_IRQn);
    return SUCCESS;
}

void
ComparatorConfig(FlagStatus enum_SetReset)
{
    if (enum_SetReset == RESET)
    {
        COMP2->CSR &=  (~COMP_CSR_COMPxEN);
    }
    else
    {
        COMP2->CSR |=  COMP_CSR_COMPxEN;
    }
}
收藏 评论1 发布时间:2015-4-9 15:57

举报

1个回答
moyanming2013 回答时间:2015-4-9 21:25:54
然后呢
。。。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版