12位ADC的对齐方式
左对齐 0xFFF0,相当于实际数据*16,所以实际的值=左对齐转换的值/16,即X>>4。
右对齐0x0FFF,实际数据。
void MX_ADC_Init(void)
{
hadc.Init.ClockPrescaler 时钟源,同步PLL,异步HSI
hadc.Init.Resolution ADC分辨率
hadc.Init.DataAlign 数据对齐方式(左,右)
hadc.Init.ScanConvMode 配置规则组序列,该参数可以关联“DiscontinuousConvMode”对主序列细分,如果设置多个通道则序列自动使能;如果只有一个通道,执行单一转换模式;如果有多个通道,执行序列转换模式;Rank(队列)定义为通道号,rank0->channel0,rank1-->channel1...;扫描方向可以递增或递减ADC_SCAN_DIRECTION_FORWARD,ADC_SCAN_DIRECTION_BACKWARD,ADC_SCAN_ENABLE
hadc.Init.EOCSelection 用来做轮询或中断标记;每个rank转换结束,或序列转换结束;EOC(EndOfConversion),ADC_EOC_SINGLE_CONV,EOC_SEQ_CONV,EOC_SINGLE_SEQ_CONV
hadc.Init.LowPowerAutoWait
hadc.Init.LowPowerAutoPowerOff
hadc.Init.ContinuousConvMode 定义当选择的触发事件(软件触发 or 外部触发)发生后规则组执行单一转换还是连续转换
hadc.Init.DiscontinuousConvMode 指定当规则组是完整序列/非连续序列(序列分布在)时是否转换序列;只有在Continuous禁用时,DisContinuous才有效;如果ContinuousConvMode使能,则该参数抛弃。
hadc.Init.ExternalTrigConv 触发方式 ADC_SOFTWARE_START 软件触发,禁止外部触发。
hadc.Init.ExternalTrigConvEdge 外部触发规则
hadc.Init.DMAContinuousRequests DMA转换请求,指定DMA执行单次(当转换数达标时停止传送)或连续请求模式。DMA必须配置为循环模式,否则当DMA buffer存满时将触发溢出; ENABLE or DISABLE
hadc.Init.Overrun 选择数据溢出时的行为:保存数据或覆盖数据;这个参数只作用于规则组,包含DMA
}
功能:ADC初始化
HAL_ADC_PollForConversion(&hadc2, 10);
功能:等待转换完成,第二个参数表示超时时间,单位ms。
HAL_ADC_Start(&hadc1);轮询模式
HAL_ADC_Start_IT(); 中断模式
HAL_ADC_Start_DMA(); DMA模式
功能:启动ADC转换。
HAL_ADC_Stop(&hadc);
功能:关闭ADC转换。
HAL_ADC_DeInit(&hadc);
功能:将ADC模块本身及相关寄存器恢复成复位初状态下的默认值, 并不是用来关闭ADC外设模块的。
__HAL_RCC_ADC1_CLK_DISABLE ;
功能:关闭ADC外设时钟以停止其功能运行。
STM32L0相关
ADC->CCR &=(~ADC_CCR_TSEN); // Turn Off TemperatureChannel
功能:关闭内部温度传感器通道。
ADC->CCR &=(~ADC_CCR_VREFEN); // Turn Off VrefintChannel
功能:关闭内部参考电压通道。