
今天抽时间研究一下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); // 编译运行即可 接线见下图 ![]() ![]() |
楼主不觉得大材小用了吗,L011都胜任。