ADC基于stm32的电压电流采集Word文档格式.docx

上传人:b****6 文档编号:8539720 上传时间:2023-05-11 格式:DOCX 页数:18 大小:53.18KB
下载 相关 举报
ADC基于stm32的电压电流采集Word文档格式.docx_第1页
第1页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第2页
第2页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第3页
第3页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第4页
第4页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第5页
第5页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第6页
第6页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第7页
第7页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第8页
第8页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第9页
第9页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第10页
第10页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第11页
第11页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第12页
第12页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第13页
第13页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第14页
第14页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第15页
第15页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第16页
第16页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第17页
第17页 / 共18页
ADC基于stm32的电压电流采集Word文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ADC基于stm32的电压电流采集Word文档格式.docx

《ADC基于stm32的电压电流采集Word文档格式.docx》由会员分享,可在线阅读,更多相关《ADC基于stm32的电压电流采集Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

ADC基于stm32的电压电流采集Word文档格式.docx

voidNVIC_Configuration(void);

voidTIM_Configuration(void);

voidADC_Configuration(void);

voidnumdisplay(uint16_tnum);

voidnumdisplay1(uint16_tnum);

voiddelay(void);

voiddelay()

{

inti,j;

for(i=0;

i<

0xfffff;

i++)j++;

}

vu16ADC_ConvertedValue[3];

/*******************************************************************************

*FunctionName:

main

*Description:

Mainprogram

*Input:

None

*Output:

*Return:

*Attention:

*******************************************************************************/

intmain(void)

inti=0;

GPIO_Configuration();

NVIC_Configuration();

TIM_Configuration();

ADC_Configuration();

/*Infiniteloop*/

for(i=0;

i<

10;

i++)

{

numb[i]=i;

}

numb[10]=1;

numb[11]=2;

numb[12]=3;

numb[13]=4;

numb[14]=5;

numb[15]=6;

;

while

(1)

{delay();

numdisplay((ADC_ConvertedValue[1]/4.096)*10.79);

//显示电流值

numdisplay1((ADC_ConvertedValue[2]/4.096)*11.755);

//显示电压值

GPIO_Configuration

ConfigureGPIOPin

*******************************************************************************/

voidnumdisplay(uint16_tnum)//电流的

uint16_ttemp1=0;

uint16_ttemp2=0;

uint16_ttemp3=0;

uint16_ttemp4=0;

if((num<

10000)&

&

(num>

=1000))

temp1=num/1000;

temp2=(num-temp1*1000)/100;

temp3=(num-temp1*1000-temp2*100)/10;

temp4=num-temp1*1000-temp2*100-temp3*10;

elseif((num<

1000)&

=100))

temp2=num/100;

temp3=(num-temp2*100)/10;

temp4=num-temp2*100-temp3*10;

elseif((100>

num)&

=10))

temp3=num/10;

temp4=num-temp3*10;

elseif(num<

10)

temp4=num;

else

{}

numb[12]=temp1;

numb[13]=temp2;

numb[14]=temp3;

numb[15]=temp4;

}

voidnumdisplay1(uint16_tnum)//电压的

uint16_ttemp5=0;

uint16_ttemp6=0;

uint16_ttemp7=0;

uint16_ttemp8=0;

temp5=num/1000;

temp6=(num-temp5*1000)/100;

temp7=(num-temp5*1000-temp6*100)/10;

temp8=num-temp5*1000-temp6*100-temp7*10;

temp6=num/100;

temp7=(num-temp6*100)/10;

temp8=num-temp6*100-temp7*10;

temp5=10;

temp7=num/10;

temp8=num-temp7*10;

temp8=num;

numb[8]=temp5;

numb[9]=temp6;

numb[10]=temp7;

numb[11]=temp8;

voidGPIO_Configuration(void)

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD

|RCC_APB2Periph_GPIOE,ENABLE);

/**

*LED1->

PD8,LED2->

PD9,LED3->

PD10,LED4->

PD11

*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9

|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

;

GPIO_Init(GPIOD,&

GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_7|GPIO_Pin_10|GPIO_Pin_12;

GPIO_Init(GPIOC,&

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12;

GPIO_Init(GPIOA,&

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11|GPIO_Pin_15;

GPIO_Init(GPIOE,&

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_15;

GPIO_Init(GPIOB,&

/*ConfigurePA.05.06.07(ADCChannel5.6.7)asanaloginput-------------------------*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;

voidADC_Configuration(void)

ADC_InitTypeDefADC_InitStructure;

DMA_InitTypeDefDMA_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_AFIO,ENABLE);

/*DMAchannel1configuration----------------------------------------------*/

DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;

DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&

ADC_ConvertedValue;

DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize=3;

DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;

DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;

DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;

DMA_InitStructure.DMA_Priority=DMA_Priority_High;

DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;

DMA_Init(DMA1_Channel1,&

DMA_InitStructure);

/*EnableDMA1channel1*/

DMA_Cmd(DMA1_Channel1,ENABLE);

/*ADC1configuration------------------------------------------------------*/

ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode=ENABLE;

ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel=3;

ADC_Init(ADC1,&

ADC_InitStructure);

/*ADC1regularchannel15configuration*/

ADC_RegularChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_239Cycles5);

ADC_RegularChannelConfig(ADC1,ADC_Channel_6,2,ADC_SampleTime_239Cycles5);

ADC_RegularChannelConfig(ADC1,ADC_Channel_7,3,ADC_SampleTime_239Cycles5);

/*EnableADC1DMA*/

ADC_DMACmd(ADC1,ENABLE);

/*EnableADC1*/

ADC_Cmd(ADC1,ENABLE);

/*EnableADC1resetcalibarationregister*/

ADC_ResetCalibration(ADC1);

/*ChecktheendofADC1resetcalibrationregister*/

while(ADC_GetResetCalibrationStatus(ADC1));

/*StartADC1calibaration*/

ADC_StartCalibration(ADC1);

/*ChecktheendofADC1calibration*/

while(ADC_GetCalibrationStatus(ADC1));

/*StartADC1SoftwareConversion*/

ADC_SoftwareStartConvCmd(ADC1,ENABLE);

TIM_Configuration

TIM_Configurationprogram.

*Reswitch(count2)turn:

voidTIM_Configuration(void)

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

TIM_DeInit(TIM3);

TIM_TimeBaseStructure.TIM_Period=200;

/*自动重装载寄存器周期的值(计数值)*/

/*累计TIM_Period个频率后产生一个更新或者中断*/

TIM_TimeBaseStructure.TIM_Prescaler=(100-1);

/*时钟预分频数例如:

时钟频率=72MHZ/(时钟预分频+1)*/

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;

/*采样分频*/

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

/*向上计数模式*/

TIM_TimeBaseInit(TIM3,&

TIM_TimeBaseStructure);

TIM_ClearFlag(TIM3,TIM_FLAG_Update);

/*清除溢出中断标志*/

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);

TIM_Cmd(TIM3,ENABLE);

/*开启时钟*/

NVIC_Configuration

Configurationthenestedvectoredinterruptcontroller.

voidNVIC_Configuration(void)

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&

NVIC_InitStructure);

#ifdefUSE_FULL_ASSERT

/**

*@briefReportsthenameofthesourcefileandthesourcelinenumber

*wheretheassert_paramerrorhasoccurred.

*@paramfile:

pointertothesourcefilename

*@paramline:

assert_paramerrorlinesourcenumber

*@retvalNone

*/

voidassert_failed(uint8_t*file,uint32_tline)

{

/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,

ex:

printf("

Wrongparametersvalue:

file%sonline%d\r\n"

file,line)*/

while

(1)

#endif

/*********************************************************************************************************

ENDFILE

********

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2