在线时间620 小时
UID317774
ROHM金币0
注册时间2018-5-18
该用户从未签到
论坛元老
- 最后登录
- 2023-6-10
|
今天抽时间研究一下temperature sensor温度传感器,
使用ADC1 PA5实现
在上帖子的基础上增加ADC1的驱动,如下
ADC1_Handler.Instance=ADC1;
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_ADC12_CLK_ENABLE(); //ʹÄÜADC1/2ʱÖÓ
__HAL_RCC_GPIOA_CLK_ENABLE(); //¿ªÆôGPIOAʱÖÓ
__HAL_RCC_ADC_CONFIG(RCC_ADCCLKSOURCE_CLKP); //ADCÍâÉèʱÖÓÑ¡Ôñ
GPIO_Initure.Pin=GPIO_PIN_5; //PA5
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //Ä£Äâ
GPIO_Initure.Pull=GPIO_NOPULL; //²»´øÉÏÏÂÀ
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
ADC1_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4; //4·ÖƵ£¬ADCCLK=PER_CK/4=64/4=16MHZ
ADC1_Handler.Init.Resolution=ADC_RESOLUTION_16B; //16λģʽ
ADC1_Handler.Init.ScanConvMode=DISABLE; //·ÇɨÃèģʽ
ADC1_Handler.Init.EOCSelection=ADC_EOC_SINGLE_CONV; //¹Ø±ÕEOCÖжÏ
ADC1_Handler.Init.LowPowerAutoWait=DISABLE; //×Ô¶¯µÍ¹¦ºÄ¹Ø±Õ
ADC1_Handler.Init.ContinuousConvMode=DISABLE; //¹Ø±ÕÁ¬Ðøת»»
ADC1_Handler.Init.NbrOfConversion=1; //1¸öת»»ÔÚ¹æÔòÐòÁÐÖÐ Ò²¾ÍÊÇֻת»»¹æÔòÐòÁÐ1
ADC1_Handler.Init.DiscontinuousConvMode=DISABLE; //½ûÖ¹²»Á¬Ðø²ÉÑùģʽ
ADC1_Handler.Init.NbrOfDiscConversion=0; //²»Á¬Ðø²ÉÑùͨµÀÊýΪ0
ADC1_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START; //Èí¼þ´¥·¢
ADC1_Handler.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;//ʹÓÃÈí¼þ´¥·¢
ADC1_Handler.Init.BoostMode=ENABLE; //BOOTģʽ¹Ø±Õ
ADC1_Handler.Init.Overrun=ADC_OVR_DATA_OVERWRITTEN; //ÓÐеÄÊý¾ÝµÄËÀºóÖ±½Ó¸²¸Çµô¾ÉÊý¾Ý
ADC1_Handler.Init.OversamplingMode=DISABLE; //¹ý²ÉÑù¹Ø±Õ
ADC1_Handler.Init.ConversionDataManagement=ADC_CONVERSIONDATA_DR; //¹æÔòͨµÀµÄÊý¾Ý½ö½ö±£´æÔÚDR¼Ä´æÆ÷ÀïÃæ
HAL_ADC_Init(&ADC1_Handler); //³õʼ»¯
HAL_ADCEx_Calibration_Start(&ADC1_Handler,ADC_CALIB_OFFSET,ADC_SINGLE_ENDED); //ADCУ׼
在while增加
adcx=Get_Adc_Average(ADC_CHANNEL_19,20);//
temp=(float)adcx*(3.3/65536); //
编译运行即可
接线见下图
|
|