新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32筆記(三)ADC、DMA、USART的綜合練習(xí)

        STM32筆記(三)ADC、DMA、USART的綜合練習(xí)

        作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
          我們?cè)谶@里設(shè)置ADC為連續(xù)轉(zhuǎn)換模式,常規(guī)轉(zhuǎn)換序列中有兩路轉(zhuǎn)換通道,分別是ADC_CH10(PC0)和ADC_CH16(片內(nèi)溫度傳感器)。因?yàn)槭褂昧俗詣?dòng)多通道轉(zhuǎn)換,數(shù)據(jù)的取出工作最適合使用DMA方式取出,so,我們?cè)趦?nèi)存里開辟了一個(gè)u16 AD_Value[2]數(shù)組,并設(shè)置了相應(yīng)的DMA模塊,使ADC在每個(gè)通道轉(zhuǎn)換結(jié)束后啟動(dòng)DMA傳輸,其緩沖區(qū)數(shù)據(jù)量為2個(gè)HalfWord,使兩路通道的轉(zhuǎn)換結(jié)果自動(dòng)的分別落到AD_Value[0]和AD_Value[1]中。
          然后,在主函數(shù)里,就無需手動(dòng)啟動(dòng)AD轉(zhuǎn)換,等待轉(zhuǎn)換結(jié)束,再取結(jié)果了。我們可以在主函數(shù)里隨時(shí)取AD_Value中的數(shù)值,那里永遠(yuǎn)都是最新的AD轉(zhuǎn)換結(jié)果。
          如果我們定義一個(gè)更大的AD_Value數(shù)組,并調(diào)整DMA的傳輸數(shù)據(jù)量(BufferSize)可以實(shí)現(xiàn)AD結(jié)果的循環(huán)隊(duì)列存儲(chǔ),從而可以進(jìn)行各種數(shù)字濾波算法
          接著,取到轉(zhuǎn)換結(jié)果后,根據(jù)V=(AD_Value/4096)*Vref+的公式可以算出相應(yīng)通道的電壓值,也可以根據(jù)T(℃) =(1.43 - Vad)/34*10^(-6) + 25的算法,得到片內(nèi)溫度傳感器的測(cè)量溫度值了。
          通過重新定義putchar函數(shù),及包含"stdio.h"頭文件,我們可以方便的使用標(biāo)準(zhǔn)C的庫函數(shù)printf(),實(shí)現(xiàn)串口通信
          相關(guān)的官方例程,可以參考FWLib V2.0的ADCADC1_DMA和USARTprintf兩個(gè)目錄下的代碼。

        本代碼例子是基于萬利199的開發(fā)板EK-STM32F實(shí)現(xiàn),CPU=STM32F103VBT6


        關(guān)鍵詞: STM32ADCDMAUSAR

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 和田市| 富平县| 安国市| 马鞍山市| 开平市| 东台市| 姚安县| 密山市| 松溪县| 寻乌县| 开平市| 阳东县| 疏勒县| 青铜峡市| 镇原县| 庆阳市| 元谋县| 连江县| 内丘县| 读书| 乐业县| 新余市| 柏乡县| 叙永县| 大城县| 施秉县| 呼伦贝尔市| 曲沃县| 娄底市| 锡林郭勒盟| 喜德县| 内丘县| 淮北市| 鹿邑县| 美姑县| 越西县| 武胜县| 北流市| 怀化市| 延津县| 含山县|