发现KSDK1.2库中的一个BUG-1

  • cxtarm
  • LV3工程师
  • |      2015-11-10 09:34:08
  • 浏览量 3464
  • 回复:3

在 fsl_adc16_hal.c 文件中,配置ADC 硬件比较功能的函数中有个 BUG

该函数原本如下:

void ADC16_HAL_ConfigHwCompare(ADC_Type *base, const adc16_hw_cmp_config_t *configPtr)
{
    uint16_t sc2;

    sc2 = ADC_RD_SC2(base);
    sc2 &= ~( ADC_SC2_ACFE_MASK
            | ADC_SC2_ACFGT_MASK
            | ADC_SC2_ACREN_MASK );
    /* Compare Function Enable. */
    if (configPtr->hwCmpEnable)
    {
        sc2 = ADC_SC2_ACFE_MASK;
    }
    /* Compare Function Greater Than Enable. */
    if (configPtr->hwCmpGreaterThanEnable)
    {
        sc2 |= ADC_SC2_ACFGT_MASK;
    }
    /* Compare Function Range Enable. */
    if (configPtr->hwCmpRangeEnable)
    {
        sc2 |= ADC_SC2_ACREN_MASK;
    }

    ADC_WR_SC2(base, sc2);
    ADC_BWR_CV1_CV(base, configPtr->cmpValue1);
    ADC_BWR_CV2_CV(base, configPtr->cmpValue2);
}

其中红色的部分为使能硬件比较功能,本应是

sc2 |= ADC_SC2_ACFE_MASK;

如果按照原库中的写法则会影响到该寄存器中其他功能的配置

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:2
cxtarm 2015-11-10
这个只要用到就能发现,我只不过提前用到了
0   回复
举报
发布
Alax 2015-11-10
厉害哦
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子