新手入门
- 积分
- 6
- 金钱
- 6
- 注册时间
- 2019-9-5
- 在线时间
- 0 小时
|
1金钱
求助!stm32L0系列三路ADC采集数据 代码如下,还请高人指点!
//ADC功能配置
void ADCx_Init1(void)
{
hadc1.Instance->CHSELR = 0;
ADC_ChannelConfTypeDef sConfig1;
HAL_ADC_MspInit1(&hadc1);
hadc1.Instance=ADCx;
hadc1.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz
hadc1.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc1.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc1.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc1.Init.DMAContinuousRequests=DISABLE;
hadc1.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc1.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc1.Init.LowPowerAutoWait=DISABLE;
hadc1.Init.LowPowerFrequencyMode=DISABLE;
hadc1.Init.Overrun=DISABLE;
hadc1.Init.Resolution=ADC_RESOLUTION_12B;
hadc1.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc1.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc1.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc1);
sConfig1.Channel = ADCx_CHANNEL4;
sConfig1.Rank = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc1, &sConfig1);
}
void ADCx_Init2(void)
{
hadc2.Instance->CHSELR = 0;
ADC_ChannelConfTypeDef sConfig2;
HAL_ADC_MspInit2(&hadc2);
hadc2.Instance=ADCx;
hadc2.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz?
hadc2.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc2.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc2.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc2.Init.DMAContinuousRequests=DISABLE;
hadc2.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc2.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc2.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc2.Init.LowPowerAutoWait=DISABLE;
hadc2.Init.LowPowerFrequencyMode=DISABLE;
hadc2.Init.Overrun=DISABLE;
hadc2.Init.Resolution=ADC_RESOLUTION_12B;
hadc2.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc2.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc2.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc2);
sConfig2.Channel = ADCx_CHANNEL3;
sConfig2.Rank = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc2, &sConfig2);
}
void ADCx_Init3(void)
{
hadc3.Instance->CHSELR = 0;
ADC_ChannelConfTypeDef sConfig3;
HAL_ADC_MspInit3(&hadc3);
hadc3.Instance=ADCx;
hadc3.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV2;//ADC时钟分频,小于16MHz
hadc3.Init.ContinuousConvMode=DISABLE;//非连续模式
hadc3.Init.DataAlign=ADC_DATAALIGN_RIGHT;//数据右对齐
hadc3.Init.EOCSelection=ADC_EOC_SINGLE_CONV;
hadc3.Init.DMAContinuousRequests=DISABLE;
hadc3.Init.ExternalTrigConv=ADC_SOFTWARE_START;//软件触发
hadc3.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc3.Init.LowPowerAutoPowerOff=DISABLE;//低功耗
hadc3.Init.LowPowerAutoWait=DISABLE;
hadc3.Init.LowPowerFrequencyMode=DISABLE;
hadc3.Init.Overrun=DISABLE;
hadc3.Init.Resolution=ADC_RESOLUTION_12B;
hadc3.Init.SamplingTime=ADC_SAMPLETIME_3CYCLES_5;//采样时间
hadc3.Init.OversamplingMode=ADC_OVR_DATA_PRESERVED;
hadc3.Init.ScanConvMode=ADC_SCAN_DIRECTION_FORWARD;
HAL_ADC_Init(&hadc3);
sConfig3.Channel = ADCx_CHANNEL2;
sConfig3.Rank = ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc3, &sConfig3);
}
void HAL_ADC_MspDeInit1(ADC_HandleTypeDef* hadc1)
{
if(hadc1->Instance==ADCx)
{
/* 禁用ADC外设时钟 */
ADCx_RCC_CLK_DISABLE();
/* AD转换通道引脚反初始化 */
HAL_GPIO_DeInit(ADCx_GPIO_PORT, ADCx_GPIO_PIN4);
}
}
void HAL_ADC_MspDeInit2(ADC_HandleTypeDef* hadc2)
{
if(hadc2->Instance==ADCx)
{
/* 禁用ADC外设时钟 */
ADCx_RCC_CLK_DISABLE();
/* AD转换通道引脚反初始化 */
HAL_GPIO_DeInit(ADCx_GPIO_PORT, ADCx_GPIO_PIN3);
}
}
void HAL_ADC_MspDeInit3(ADC_HandleTypeDef* hadc3)
{
if(hadc3->Instance==ADCx)
{
/* 禁用ADC外设时钟 */
ADCx_RCC_CLK_DISABLE();
/* AD转换通道引脚反初始化 */
HAL_GPIO_DeInit(ADCx_GPIO_PORT, ADCx_GPIO_PIN2);
}
}
|
|