智能小車stm32cubemx教程8.模數(shù)轉(zhuǎn)化_第1頁
智能小車stm32cubemx教程8.模數(shù)轉(zhuǎn)化_第2頁
智能小車stm32cubemx教程8.模數(shù)轉(zhuǎn)化_第3頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、ADC 簡介實驗?zāi)康模和ㄟ^配置 ADC 外設(shè),在串口輸出電壓值信息1.1【實驗?zāi)康摹浚?)熟悉 RealView MDK 工具的使用方式。(2)能夠把 ST庫文件添加到項目工程。(3)掌握 RealView MDK程、仿真、調(diào)試。的基本設(shè)計流程和設(shè)計步驟,能夠使用工具進行設(shè)計、編(4)通過本實驗掌握的定時器中斷的使用方法。(5)掌握如何利用 STM32F103rc的定時器服務(wù)程序。1.2【實驗環(huán)境】(6) FS-STM32F103 開發(fā)(7)J-Link 仿真器(8)RealView MDK5.10 集成開發(fā)(9)STM32CUBEMX 圖形開發(fā)(10)PC 機 XP、Window7/8 (3

2、2/64bit)1.3【實驗內(nèi)容】編寫定時器程序,實現(xiàn) FS-STM32F103 開發(fā)上的 adc 模數(shù)轉(zhuǎn)換。調(diào)試編譯好固件程序后,將程序到 FS-STM32F103 開發(fā)板,按復(fù)位鍵觀察實驗現(xiàn)象。1.4【實驗原理】ADC(模擬/數(shù)字轉(zhuǎn)換器)STM32F103xx 增強型產(chǎn)品內(nèi)嵌 2 個 12 位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個 ADC 有多達(dá) 16 個外部通道,可以執(zhí)行單次或掃描轉(zhuǎn)換模式;在掃描模式下,轉(zhuǎn)換在一組選定的模擬輸入上自動進行。ADC 接口上額外的邏輯功能允許:同時采樣和保持交叉采樣和保持單次采樣ADC 可以使用 DMA 操作。模擬看門狗功能允許非常精準(zhǔn)地監(jiān)視一路、多路或所有選中

3、的被轉(zhuǎn)換電壓,當(dāng)被監(jiān)視的信號超出預(yù)置的閥值時,將產(chǎn)生中斷。由標(biāo)準(zhǔn)定時器(TIMx)和高級控制定時器(TIM1)產(chǎn)生的事件,可以分別觸發(fā)、外部觸發(fā)和 DMA 觸發(fā),允許應(yīng)用程序同步 AD級聯(lián)到 ADC 的開始DMA關(guān)于 DMA,最大的作用就是減少 cpu 開銷,有種說法是 dma 相當(dāng)于cpu 的一個,很形象。說的再具體點就是幫CPU 來轉(zhuǎn)移數(shù)據(jù)的。都知道,AD 每次轉(zhuǎn)換結(jié)束后會將轉(zhuǎn)換的結(jié)果放到一個固定的寄存器里,以往如果想將該寄存器中的值賦給某一變量時會用到賦值語句,如果不用 DMA,則賦值語句便要 CPU 來完成,CPU 本來就要忙著處理其他事情,現(xiàn)在還要來解決賦值語句這么簡單決這個問題。由

4、于 DMA 只是個完成任務(wù)。,肯到會。所以需要 DMA 這個來幫他解,所以比較笨,你只有把任務(wù)交代清楚了她才能很好的這里只一路 adc,用來檢測電池電量的,原理圖如下電池電壓經(jīng)過分壓后輸入PC4,如果電池電量低到一定程度時,單片機將停止供電。時,輸入電壓也會降低,當(dāng)降1.5【配置】如果需要中斷可配置生成代碼1.6【實驗步驟】1、 參考的工程,對代碼進行黏貼,下面做續(xù)電池電量的實驗(具體代碼參照工程)2、 對工程進行編譯調(diào)試3、 開發(fā)板連接,參照上節(jié)(led)實驗4、 打開工程,往開發(fā)板程序(同上,參照上節(jié))5、 開發(fā)板上電查看實驗結(jié)果1.7【實驗結(jié)果】可以看到,adc 連續(xù)不斷的將 PC4 的

5、模擬輸入電壓轉(zhuǎn)換為數(shù)字電壓后通過串口打印出來,具體電壓算法為:假設(shè)到數(shù)字為valvaltage = val *3.3 / (212-1)這里求出的數(shù)是 stlink 供電時的 adc 輸入,經(jīng)過分壓后的,如果使用電池供電就沒問題。1.8【實驗參考代碼】需要開啟然后不斷接收就行了,這里小燈閃爍一次,顯示一次數(shù)據(jù),COBOL Code1234/* USER CODE BEGIN Includes */ #include stdio.h/* USER CODE END Includes */5678910111213141516171819202122232425262728293031323334

6、3536373839404142434445464748/* Private variables*/* USER CODE BEGIN PV */* Private variables*/u32_t Vaule_adc;/* USER CODE END PV */* Private function prototypes*/void SystemClock_Config(void);/* USER CODE BEGIN PFP */* Private function prototypes*/fp(ch, FILE *f);/* USER CODE END PFP */* USER CODE

7、BEGIN 0 */* USER CODE END 0 */main(void)/* USER CODE BEGIN 1 */* USER CODE END 1 */* MCU Configuration*/* Reset of all peripherals, Initializes the Flasherface and the Systick. */HAL_Init();/* Configure the system clock */ SystemClock_Config();/* Initialize all configured peripherals */ MX_GPIO_Init

8、();MX_DMA_Init(); MX_ADC1_Init(); MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_ADC_Start_DMA(&hadc1,&Vaule_adc,1);這里使用了prf()函數(shù),只要實現(xiàn)實現(xiàn)下面的從定向就可以了,很方便123456789495051525354555657585960616263/* USER CODE BEGIN 4 */fp(ch, FILE *f)while(USART1-SR&0X40)=0);/?,? USART1-DR = (u8_t) ch;return ch;/* USER CODE END 4 */HAL_GPIO_Writn(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);/* USER CODE END 2 */* Infinioop */* USER CODE BEGIN WHILE */while (1)/* US

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論