stm32F103c8系列的ADC ,本次选用PA2,PA3
Scan Conversion Mode( 扫描模式 ) 使用了多个通道ENABLE就是开启扫描模式,否则DISABLE
Continuous Conversion Mode(连续转换模式) 连续转换ENABLE,不连续则DISABLE开一次转换一次
Discontinuous Conversion Mode(间断模式) 多个通道则需使能ENABLE
number of Discontinous Conversions间断模式可以让扫描的2个通道进行分成四2个组,此为配置间断组每个组有几个通道的,这里必须配置为1(否则在获取ad值得时候只能读取到每个间断组最后一个通道)。
Enable Regular Conversions (启用常规转换模式)
Number OF Conversion(转换通道数) 用了两个
Extenal Trigger Conversion Source (外部触发转换源) 选软件触发
Rank 配置两个通道为哪个,且设置转换时间
用print函数输出串口,则在usart.c中加入以下函数且勾选Use MicroLIB
/* USER CODE BEGIN 0 */
#include<stdio.h>
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
/* USER CODE END 0 */
ADC函数
/* USER CODE BEGIN 1 */
uint8_t i;
uint16_t adcBuf[2];
/* USER CODE END 1 */
/* USER CODE BEGIN 2 */
HAL_ADCEx_Calibration_Start(&hadc1); //AD校准
/* USER CODE END 2 */
HAL_ADC_Start(&hadc1);函数必须放入for,若不是则采集第一次的ADC通道,即PA2
while (1)
{
/* USER CODE END WHILE */
for(i=2;i<4;i++)
{
HAL_ADC_Start(&hadc1); //此开始函数必须放入for,若不是则采集第一次的ADC通道,即PA2
HAL_ADC_PollForConversion(&hadc1,0xffff);
adcBuf[i]=HAL_ADC_GetValue(&hadc1);
printf("PA%d: %.4fV\r\n",i,adcBuf[i]*3.3/4096);
}
HAL_ADC_Stop(&hadc1);
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}