在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            STM32 之 ADC_DMA

            作者: 時間:2016-12-03 來源:網(wǎng)絡(luò) 收藏
            這里僅僅是一個測量趨勢,并不是很精確的測量。

            再次重申STM32ADC不同的通道對應(yīng)著不同的管腳,本代碼中PA1對應(yīng)著通道1。

            本文引用地址:http://www.biyoush.com/article/201612/325138.htm

            包含文件:

            由于百度字數(shù)限制這里只貼出關(guān)鍵代碼:

            (1)Main

            C語言:Codee#14684
            /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
            + 實驗平臺 : ST 官方三合一套件
            + 硬件 : STM32F103C8T6
            + 開發(fā)平臺 : IAR For ARM 5.40
            + 仿真器 : J-Link
            + 日期 : 2010-10-28
            + 頻率 :HSE = 8MHz ,主頻 = 72MHz
            ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

            #include "includes.h"
            #include "stdio.h"
            /*******************************************************************************
            == 變量聲明 ==
            *******************************************************************************/
            floatADC_Value,Tem;
            unsignedchara=0;
            unsignedcharb=0;
            unsignedcharc=0;
            unsignedchard=0;

            /*******************************************************************************
            == Main 函數(shù) ==
            *******************************************************************************/
            voidmain(void)
            {
            //---- 初始化 ------------------------------------------------------
            RCC_Configuration();//配置系統(tǒng)時鐘
            NVIC_Configuration();//配置 NVIC 和 Vector Table
            SysTick_Config();//配置SysTick的精確延時

            GPIO_Configuration();
            UART1_Configuration();
            AD_Configration();
            DMA_Configration();


            //---- 任務(wù)開始 ----------------------------------------------------
            LED1_HIGH;LED2_HIGH;LED3_HIGH;LED4_HIGH;// 初始化讓燈全滅

            Uart1_PutString("===== 豆子 STM32例程之ADC_DMA =====rn",39);

            while(1)
            {
            ADC_Value=(float)(sys_analog[5])*330/409600;// 計算公式datasheet上可以找到,但是我沒找到。
            // Tem = (1.42 - ADC_Value)*1000/4.35 + 25;

            ADC_Value=ADC_Value*1000;// ADC是12位的,這里數(shù)據(jù)類型轉(zhuǎn)換有問題
            a=ADC_Value/1000;
            b=(ADC_Value-a*1000)/100;
            c=(ADC_Value-a*1000-b*100)/10;
            d=ADC_Value-a*1000-b*100-c*10;

            Uart1_PutChar(a+0);
            Uart1_PutString(".",1);
            Uart1_PutChar(b+0);
            Uart1_PutChar(c+0);
            Uart1_PutChar(d+0);
            Uart1_PutString(" Vn",3);

            Delay_Ms(1000);
            }
            }

            (2)ADC初始化

            C語言:Codee#14685
            /*******************************************************************************
            * Function Name : AD_Configration
            * Description : Configures the ADC1
            * Input : None
            * Output : None
            * Return : None
            *******************************************************************************/
            voidAD_Configration(void)
            {
            ADC_InitTypeDefADC_InitStructure_ADC1;

            /* Resets ADC1 */
            ADC_DeInit(ADC1);

            ADC_InitStructure_ADC1.ADC_Mode=ADC_Mode_Independent;// 配置ADC1 工作在獨立模式
            ADC_InitStructure_ADC1.ADC_ScanConvMode=ENABLE;// 配置ADC1 模數(shù)轉(zhuǎn)換工作在掃描模式(多通道模式)
            ADC_InitStructure_ADC1.ADC_ContinuousConvMode=ENABLE;// 配置ADC1 模數(shù)轉(zhuǎn)換工作在連續(xù)模式
            ADC_InitStructure_ADC1.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;// 配置ADC1 模數(shù)轉(zhuǎn)換有軟件方式啟動而非中斷方式
            ADC_InitStructure_ADC1.ADC_DataAlign=ADC_DataAlign_Right;// 配置ADC1 模數(shù)轉(zhuǎn)換數(shù)據(jù)對齊方式為右對齊
            ADC_InitStructure_ADC1.ADC_NbrOfChannel=1;// 配置ADC1 模數(shù)轉(zhuǎn)換的通道數(shù)目 為 1個通道
            ADC_Init(ADC1,&ADC_InitStructure_ADC1);// 配置ADC1 初始化
            //常規(guī)轉(zhuǎn)換序列1:通道10
            ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);// 配置為 ADC1,通道1,1個通道,采樣時間為239.5個周期,周期越長采集的信號越準(zhǔn)越穩(wěn)
            // 對應(yīng)的管教所對應(yīng)的ADC通道時對應(yīng)的,一定不要搞錯!
            /* Enable the temperature sensor and vref internal channel */
            //ADC_TempSensorVrefintCmd(ENABLE); // 使能溫度傳感器內(nèi)部參考電壓通道

            ADC_DMACmd(ADC1,ENABLE);// 使能ADC1的DMA請求

            ADC_Cmd(ADC1,ENABLE);// 使能ADC1

            /* Enable ADC1 reset calibaration register */
            ADC_ResetCalibration(ADC1);// 重置ADC1的校準(zhǔn)寄存器
            /* Check the end of ADC1 reset calibration register */
            while(ADC_GetResetCalibrationStatus(ADC1));// 檢測是否重置完畢

            /* Start ADC1 calibaration */
            ADC_StartCalibration(ADC1);// 開始校準(zhǔn) ADC1
            /* Check the end of ADC1 calibration */
            while(ADC_GetCalibrationStatus(ADC1));// 檢測是否校準(zhǔn)完畢

            /* Start ADC1 Software Conversion */
            ADC_SoftwareStartConvCmd(ADC1,ENABLE);// 軟件使能ADC1的轉(zhuǎn)換
            }

            (3)DMA初始化

            C語言:Codee#14686

            /*******************************************************************************
            * Function Name : DMA_Config
            * Description : Configures SysTick
            * Input : None
            * Output : None
            * Return : None
            *******************************************************************************/
            voidDMA_Configration(void)
            {
            DMA_InitTypeDefDMA_InitStructure_DMA1;

            DMA_DeInit(DMA1_Channel1);// 配置DMA1 的通道1寄存器為缺省值

            DMA_InitStructure_DMA1.DMA_PeripheralBaseAddr=0x4001244C;// 配置DMA1 外設(shè)基地址為 0x4001244C , 在datasheet上可以查到
            DMA_InitStructure_DMA1.DMA_MemoryBaseAddr=(unsignedint)(&sys_analog);// 配置DMA1 內(nèi)存基地址
            DMA_InitStructure_DMA1.DMA_DIR=DMA_DIR_PeripheralSRC;// 配置DMA1 外設(shè)作為數(shù)據(jù)傳輸?shù)膩碓?,就是外設(shè)向內(nèi)存中搬運數(shù)據(jù)
            DMA_InitStructure_DMA1.DMA_BufferSize=10;// 配置DMA1 數(shù)據(jù)緩存大小為 10個數(shù)據(jù)單位
            DMA_InitStructure_DMA1.DMA_PeripheralInc=DMA_PeripheralInc_Disable;// 配置DMA1 外設(shè)地址寄存器不變
            DMA_InitStructure_DMA1.DMA_MemoryInc=DMA_MemoryInc_Enable;// 配置DMA1 內(nèi)存地址寄存器遞增
            DMA_InitStructure_DMA1.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;// 配置DMA1 外設(shè)數(shù)據(jù)寬度為 16位 ,這里注意ADC是12位的
            DMA_InitStructure_DMA1.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;// 配置DMA1 內(nèi)存數(shù)據(jù)寬度為 16位
            DMA_InitStructure_DMA1.DMA_Mode=DMA_Mode_Circular;// 配置DMA1 工作在循環(huán)緩存模式
            DMA_InitStructure_DMA1.DMA_Priority=DMA_Priority_Medium;// 配置DMA1 的相應(yīng)通道(channel x)的優(yōu)先級為 中優(yōu)先級
            DMA_InitStructure_DMA1.DMA_M2M=DMA_M2M_Disable;// 配置DMA1 的相應(yīng)通道(channel x)內(nèi)存到內(nèi)存?zhèn)鬏敒?使能狀態(tài)

            DMA_Init(DMA1_Channel1,&DMA_InitStructure_DMA1);// 初始化 DMA1_Channel1 的相關(guān)寄存器

            DMA_Cmd(DMA1_Channel1,ENABLE);// 使能 DMA1_Channel1

            }



            關(guān)鍵詞: STM32ADCDM

            評論


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

            關(guān)閉