




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ARM微控制器與嵌入式系統
STM32-ADC編程要點主講人:景妮琴北京電子科技職業學院內容ADC硬件設計STM32-ADC編程要點ADC結構體ADC庫函數ADC中斷主函數計算電壓值ADC硬件設計使用一個滑動變阻器,將中間端子接到ADC通道的GPIO(從表中任選)通道號ADC1ADC2ADC3通道0PA0PA0PA0通道1PA1PA1PA1通道2PA2PA2PA2通道3PA3PA3PA3通道4PA4PA4PF6通道5PA5PA5PF7通道6PA6PA6PF8通道7PA7PA7PF9通道8PB0PB0PF10通道9PB1PB1PF3通道10PC0PC0PC0通道11PC1PC1PC1通道12PC2PC2PC2通道13PC13PC13PC13通道14PC4PC4PF4通道15PC5PC5PF5編程要點獨立模式-單通道-中斷(不使用DMA)1-打開GPIO時鐘,ADC時鐘2-ADC通道端口配置3-配置ADC4-配置通道的轉換順序、配置中斷、打開ADC、觸發ADC開始轉換5-編寫main函數,中斷服務函數,獲取ADC轉換結果編程要點:獨立模式-單通道-中斷(不使用DMA)1、開啟GPIO時鐘、ADC時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);編程要點:獨立模式-單通道-中斷(不使用DMA)2、ADC通道端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AN;//模擬模式GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;//浮空輸入GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化配置ADC_InitTypeDef初始化結構體ADC_Resolution:配置ADC的分辨率,可選的分辨率有12位、10位、8位和6位。ADC_Resolution_12b,ADC_Resolution_10b,ADC_Resolution_8b,ADC_Resolution_6bADC_InitStructure.ADC_Resolution=ADC_Resolution_12b;//ADC分辨率ADC_InitTypeDef初始化結構體ScanConvMode:配置是否使用掃描。可選參數為ENABLE和DISABLE。如果是單通道AD轉換使用DISABLE,如果是多通道AD轉換使用ENABLE。ADC_InitStructure.ADC_ScanConvMode=DISABLE;//單通道不掃描ADC_InitTypeDef初始化結構體ADC_ContinuousConvMode:配置是啟動自動連續轉換還是單次轉換可選參數為ENABLE和DISABLE使用ENABLE配置為使能自動連續轉換;使用DISABLE配置為單次轉換,轉換一次后停止需要手動控制才重新啟動轉換。ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//連續轉換ADC_InitTypeDef初始化結構體ADC_ExternalTrigConvEdge:外部觸發極性選擇如果使用外部觸發,可以選擇觸發的極性,可選有禁止觸發檢測、上升沿觸發檢測、下降沿觸發檢測以及上升沿和下降沿均可觸發檢測。ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;//禁止外部邊沿觸發ADC_InitTypeDef初始化結構體ADC_ExternalTrigConv:外部觸發選擇實際上,我們一般使用軟件自動觸發。ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_Ext_IT11;//使用軟件觸發,此值隨便賦值即可ADC_InitTypeDef初始化結構體ADC_DataAlign:轉換結果數據對齊模式可選右對齊ADC_DataAlign_Right,左對齊ADC_DataAlign_Left。一般我們選擇右對齊模式。ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
//數據右對齊 ADC_InitTypeDef初始化結構體ADC_NbrOfChannel:AD轉換通道數目。Thisparametermustrangefrom1to16.ADC_InitStructure.ADC_NbrOfConversion=1;//轉換通道1個ADC_CommonInitTypeDef通用初始化結構體ADC_Mode:ADC工作模式選擇,有獨立模式、雙重模式以及三重模式ADC_CommonInitStructure.ADC_Mode=ADC_Mode_Independent;//獨立ADC模式ADC_CommonInitTypeDef通用初始化結構體ADC_Prescaler:ADC時鐘分頻系數選擇ADC時鐘是由PCLK2分頻而來,分頻系數決定ADC時鐘頻率,可選的分頻系數為2、4、6和8。ADC最大時鐘配置為36MHz。
ADC_CommonInitStructure.ADC_Prescaler=ADC_Prescaler_Div4;//時鐘為fpclkx分頻ADC_CommonInitTypeDef通用初始化結構體ADC_DMAAccessMode:DMA模式設置,只有在雙重或者三重模式才需要設置,可以設置三種模式
ADC_CommonInitStructure.ADC_DMAAccessMode=ADC_DMAAccessMode_Disabled;//禁止DMA直接訪問模式ADC_CommonInitTypeDef通用初始化結構體ADC_TwoSamplingDelay:2個采樣階段之前的延遲,僅適用于雙重或三重交錯模式。ADC_CommonInitStructure.ADC_TwoSamplingDelay=ADC_TwoSamplingDelay_20Cycles;//采樣時間間隔 ADC庫函數ConfiguresADC1Channel2as:firstconvertedchannelwithan7.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_2,1,ADC_SampleTime_7Cycles5);ADC庫函數ConfiguresADC1Channel8as:secondconvertedchannelwithan1.5cyclessampletimeADC_RegularChannelConfig(ADC1,ADC_Channel_8,2,ADC_SampleTime_1Cycles5);編程要點:獨立模式-單通道-中斷(不使用DMA)3、ADC配置編程要點:獨立模式-單通道-中斷(不使用DMA)4、配置通道的轉換順序、配置中斷、打開ADC、觸發ADC開始轉換ADC中斷主函數計算電壓值5、編寫main函數,中斷服務函數,獲取ADC轉換結果獲取ADC轉換結果uint16_tADC_Get_Value(ADC_TypeDef*adcx,uint16_tchx,uint8_tRauk){ //為選定的ADC常規通道配置相應的*排序器和采樣時間 ADC_RegularChannelConfig(adcx,chx,Rauk,ADC_SampleTime_480Cycles); //軟件啟動ADC ADC_SoftwareStartCo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論