国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

STM32 之 ADC_DMA

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

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

本文引用地址:http://m.ptau.cn/article/201612/325138.htm

包含文件:

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

(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();


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

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

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

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

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

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

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

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

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

}



關鍵詞: STM32ADCDM

評論


技術專區(qū)

關閉