如上图所示,1启动ADC1,2使能温度采集通道。3处的Clock Configruation设置ADC时钟为12MHz。 3. 编辑代码 项目自动创建了ADC对象hadc1以及初始化代码如下: //ADC对象 ADC_HandleTypeDef hadc1; //系统生成初始化代码 /** * @brief ADC1 Initialization Function * @param None * @retval None */ static void...
//第三步:初始化ADC1的相关参数,设置ADC1的工作模式以及规则序列的相关信息 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //工作在单一模式而不是循环模式 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换是没...
VRefint=(ADCResult[1]/4095.) * 3.3; Temperature = 30.+ (88.*(ADCResult[2]-((ts_c30/1.1)))/(ts_c110 - ts_c30); EndofCon_Flag=0; //HAL_UART_Transmit(&hlpuart1, (uint8_t *)WDVol ,sizeof(WDVol), TX_Timeout); HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3,GPIO_PIN_RESET);//for...
double ACD1_SampleValue2ReadableValue(u16 sampleValue) { return (double)sampleValue*((double)ADC_RefVoltoge/4096.0); } 获得温度值:double TSensor_GetTemperature() double TSensor_GetTemperature() { double VSense = ACD1_SampleValue2ReadableValue(ADC1_GetAverageConvValue(ADC_Channel_16,20)); USA...
float temperature = (float)adc_value * 3.3 / 4096; // 转换为电压值 return temperature;} ``...
使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用ADC进行NTC温度采集。 1 新建项目 建立ntc_temp项目 在PIO的Home页面新建项目,项目名称ntc_temp,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3; 项目建立完成后在src目录下新建main.c主程序文件; ...
int main() { COM_Init(); ADC_Configuration(); while(1) { showTemperature(); delay_ms(1000); } } void showTemperature(void) { /*Returns the ADC1 Master data value of the last converted channel*/ uint16_t DataValue = 0; DataValue = ADC_GetConversionValue(ADC1); // ADC精度:(VDDA...
另外,检查一下规格,温度传感器是否需要单独打开。我记得F0是要单独打开的,即使ADC选择了这个通道。
STM32内置一个温度传感器,通过ADC_IN16这个通道可以读出温度传感器的电压。在STM32的技术参考手册中给出了一个计算公式:Temperature (in ℃) = {(V25 - VSENSE) / Avg_Slope} + 25公式中的Vsense就是在ADC_IN16读到的数值。Avg_Slope就是温度与ADC数值转换的斜率。设想一
ADC配置分为模式设置和参数设置两部分,在模式设置部分,全是复选框,其意义说明如下: IN0~IN15:ADC1的16个外部输入通道,因为开发板4个模拟量采集端连接到MCU的PA0~PA3引脚的,即ADC1的通道0~通道3,所以需要将IN0~IN3输入通道选中。 Temperature Sensor Channel:内部温度传感器通道,连接ADC1的IN16通道。