在 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;
如果按照原库中的写法则会影响到该寄存器中其他功能的配置