作者:陈广
日期:2023-3-11
/* USER CODE BEGIN 2 */
ADC1->CR2 |= 1; //启动ADC
LL_mDelay(1); //延时1毫秒
ADC1->CR2 |= 4; //自校准
while(ADC1->CR2 & 4); //等待自校准完成
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
ADC1->CR2 |= 1<<22 | 1<<20; //启动规则通道
while(!(ADC1->SR & 2)); //等待转换完成
uint16_t val = ADC1->DR & 0xFFF; //获取转换数据
float vol = 3.3 * val / 4096; //转换为电压值
printf("vol = %f\n", vol);
LL_mDelay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
/* USER CODE BEGIN 2 */
LL_ADC_Enable(ADC1); //启动ADC
LL_mDelay(1); //延时1毫秒
LL_ADC_StartCalibration(ADC1); //自校准
while(LL_ADC_IsCalibrationOnGoing(ADC1)); //等待自校准完成
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
LL_ADC_REG_StartConversionSWStart(ADC1); //启动规则通道
while(!LL_ADC_IsActiveFlag_EOS(ADC1)); //等待转换完成
uint16_t val = LL_ADC_REG_ReadConversionData12(ADC1); //获取转换数据
float vol = 3.3 * val / 4096; //转换为电压值
printf("vol = %f\n", vol);
LL_mDelay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
;