經典 STM32 ADC多通道取樣的例子

2021-07-08 11:26:08 字數 1086 閱讀 1717

stm32 adc多通道轉換

描述:用adc連續採集11路模擬訊號,並由dma傳輸到記憶體。adc配置為掃瞄並且連續轉換模式,adc的時鐘配置為12mhz。在每次轉換結束後,由dma迴圈將轉換的資料傳輸到記憶體中。adc可以連續採集n次求平均值。最後通過串列埠傳輸出最後轉換的結果。

程式如下:

#i nclude "stm32f10x.h" //這個標頭檔案包括stm32f10x所有外圍暫存器、位、記憶體對映的定義

#i nclude "eval.h" //標頭檔案(包括串列埠、按鍵、led的函式宣告)

#i nclude "systickdelay.h"

#i nclude "uart_inte***ce.h"

#i nclude

#define n 50 //每通道採50次

#define m 12 //為12個通道

vu16 ad_value[n][m]; //用來存放adc轉換結果,也是dma的目標位址

vu16 after_filter[m]; //用來存放求平均值之後的結果

int i;

void gpio_configuration(void)

}void rcc_configuration(void)

}void adc1_configuration(void)

void dma_configuration(void)

//配置所有外設

void init_all_periph(void)

u16 getvolt(u16 advalue)

void filter(void)

after_filter[i]=sum/n;

sum=0;}}

int main(void)}}

總結該程式中的兩個巨集定義,m和n,分別代表有多少個通道,每個通道轉換多少次,可以修改其值。

曾出現的問題:配置時鐘時要知道外部晶振是多少,以便準確配置時鐘。將轉換值由二進位制轉換為十進位制時,要先擴大100倍,方便顯示小數。最後串列埠輸出時在 printf語句之前加這句**,防止輸出的第一位資料丟失:while(usart_getflagstatus(usart1,usart_flag_txe)==reset);

stm32adc多通道資料採集

工程連線 date 2013 8 28 author mei jilin brief adc1的配置完成3通道的資料採集 attention 1 adc config 配置adc 2 adc start 啟動adc,開始轉換 3 get channelvalue adc channel x 讀取相應...

STM32 ADC多通道採集電壓

前面的部落格中詳細介紹了stm32中adc的相關資訊,這篇部落格是對adc內容的乙個總結提公升,adc的詳細介紹 adc詳解 為了使這次 閱讀方便,博主沒有在標頭檔案中巨集定義變數,都是直接取樣庫函式中的規定形參。此次採用多通道採集電壓,使用adc1的通道10 11 12 13 14 15一共六個通...

STM32的ADC取樣與多通道ADC取樣

stm32庫開發實戰指南 劉火良,楊森著 原理性質的東西還是少講,因為上面那本書裡面講解的很詳細了,直接來看硬體電路圖 這裡使用的是3362電位器 10k 即用stm32來測量pb0和gnd兩端的電壓,這樣的電路設計比較簡單也容易理解,但是存在一定的弊端,下面給出 stm32庫開發實戰指南 上面配套...