
大神们好,我刚接触STM32L0系列芯片,现在搞AD转换,用HAL库,可以正常转换,但是转换时间太长了,效率很低。不知道是我程序有问题还是什么,现在想换寄存器写,不用库,用寄存器现在很没头绪,望大神们指点,最好给点例程。谢谢。下面是我用库写的 void vInitAdc(void) { AdcHandle.Instance = ADC1; AdcHandle.Init.OversamplingMode = DISABLE; AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1; AdcHandle.Init.LowPowerAutoPowerOff = DISABLE; AdcHandle.Init.LowPowerFrequencyMode = ENABLE; AdcHandle.Init.LowPowerAutoWait = DISABLE; AdcHandle.Init.Resolution = ADC_RESOLUTION_12B; AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_7CYCLES_5; AdcHandle.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; AdcHandle.Init.ContinuousConvMode = DISABLE;//ENABLE; AdcHandle.Init.DiscontinuousConvMode = DISABLE; AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; AdcHandle.Init.EOCSelection = ADC_EOC_SINGLE_CONV; AdcHandle.Init.DMAContinuousRequests = DISABLE; /* Initialize ADC peripheral according to the passed parameters */ if (HAL_ADC_Init(&AdcHandle) != HAL_OK) { ;//Error_Handler(); } /* ### - 2 - Start calibration ############################################ */ if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK) { ;//Error_Handler(); } } unsigned int uiADC_Result(unsigned char ucChannel) { unsigned char i; unsigned int uiMaxResult = 0, uiMinResult = 0xFFFF; unsigned int j,uiResult = 0; ADC_ChannelConfTypeDef sConfig; ADC1->CHSELR=0; ADC1->CHSELR=ucChannel;//sConfig.Channel; HAL_ADC_Start(&AdcHandle); for (i = 0;i < 6;i++) { HAL_ADC_PollForConversion(&AdcHandle, 10); /* Check if the continous conversion of regular channel is finished */ if ((HAL_ADC_GetState(&AdcHandle) & HAL_ADC_STATE_REG_EOC) == HAL_ADC_STATE_REG_EOC) { j = HAL_ADC_GetValue(&AdcHandle); } if (j > uiMaxResult) { uiMaxResult = j; } if (j < uiMinResult) { uiMinResult = j; } uiResult += j; } uiResult -= uiMaxResult; uiResult -= uiMinResult; uiResult /= 4; return uiResult; } |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
我现在就需要的是单通道连续采集
adc+dma也可以单通道多次采样的。。