stm32l476 adc数据无法采集,开启ASRC,解决方式
这里使用GPIO_MODE_ANALOG会导致不能正常转换数据,
根据hal_gpio.h:
GPIO_MODE_ANALOG_ADC_CONTROL为0x0B, GPIO_MODE_ANALOG为0x03,
从参考手册来看,只有最低两位有用,也就是说0x03和0x0B用途相等,为什么实际上,使用0x03不行,必须使用0x0B?
详细分析代码
当GPIO_Init->Mode=GPIO_MODE_ANALOG_ADC_CONTROL时:
由于GPIO_MODE_ANALOG_ADC_CONTROL=0x0B // 0000 1001,右移3位,即0x01,给temp
根据GPIO模拟开关控制寄存器
如GPIO_Init->Mode=GPIO_MODE_ANALOG_ADC_CONTROL则GPIOx->ASRC=1,打开;
如GPIO_Init->Mode=GPIO_MODE_ANALOG_ADC 则GPIOx->ASRC=0,关闭
重新配置一下GPIO就行: