日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F7xx —— ADC

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F7xx —— ADC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STM32F7xx —— ADC

?

基礎知識參考:ADC? ?

?

/***************************************************************************** * ADC1 ADC2 ADC3 * 通道0 PA0 PA0 PA0 * 通道1 PA1 PA1 PA1 * 通道2 PA2 PA2 PA2 * 通道3 PA3 PA3 PA3 * 通道4 PA4 PA4 PF6 * 通道5 PA5 PA5 PF7 * 通道6 PA6 PA6 PF8 * 通道7 PA7 PA7 PF9 * 通道8 PB0 PB0 PF10 * 通道9 PB1 PB1 PF3 * 通道10 PC0 PC0 PC0 * 通道11 PC1 PC1 PC1 * 通道12 PC2 PC2 PC2 * 通道13 PC3 PC3 PC3 * 通道14 PC4 PC4 PF4 * 通道15 PC5 PC5 PF5 * 通道18 溫度傳感器 *****************************************************************************/ static ADC_HandleTypeDef adc_handle;static void adc_gpio_init(void) {}static void adc_mode_init(void) {__HAL_RCC_ADC1_CLK_ENABLE();adc_handle.Instance = ADC1;adc_handle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;adc_handle.Init.Resolution = ADC_RESOLUTION_12B; //12 位模式adc_handle.Init.DataAlign = ADC_DATAALIGN_RIGHT; //右對齊adc_handle.Init.ScanConvMode = DISABLE; //非掃描模式adc_handle.Init.EOCSelection = DISABLE; //關閉 EOC 中斷adc_handle.Init.ContinuousConvMode = DISABLE; //關閉連續轉換adc_handle.Init.NbrOfConversion = 1;adc_handle.Init.DiscontinuousConvMode = DISABLE; //禁止不連續采樣模式adc_handle.Init.NbrOfDiscConversion = 0; //不連續采樣通道數為 0adc_handle.Init.ExternalTrigConv = ADC_SOFTWARE_START; //軟件觸發adc_handle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; //使用軟件觸發adc_handle.Init.DMAContinuousRequests = DISABLE; //關閉 DMA 請求HAL_ADC_Init(&adc_handle); }void ADCInit(void) {adc_gpio_init();adc_mode_init(); }uint16_t ADCGet(uint32_t channel) {ADC_ChannelConfTypeDef adc_config;adc_config.Channel = channel;adc_config.Rank = 1;adc_config.SamplingTime = ADC_SAMPLETIME_480CYCLES;adc_config.Offset = 0;HAL_ADC_ConfigChannel(&adc_handle, &adc_config);HAL_ADC_Start(&adc_handle);HAL_ADC_PollForConversion(&adc_handle, 10); //輪詢轉換return (uint16_t)HAL_ADC_GetValue(&adc_handle); }float ADCAverageGet(uint32_t channel, uint16_t times) {float temp;uint32_t value = 0, average;uint16_t i;for(i = 0; i < times; ++i){value += ADCGet(channel);}average = value / times;temp = (float)average * (3.3 / 4096);return temp; }// T = ((Vsense - V25) / avg_slope) + 25; // V25:Vsense在25°時的數值(0.76) // avg_slope:溫度與Vsense曲線的平均斜率(2.5mV/度) float ADCSocInnerTemperature(void) {float temperature;temperature = ADCAverageGet(ADC_CHANNEL_TEMPSENSOR, 10);temperature = (temperature - 0.76f) * 400 + 25;printf("%f\r\n", temperature);return temperature; }

?

?

?

?

總結

以上是生活随笔為你收集整理的STM32F7xx —— ADC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。