ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
/*LED用定时器TIM2*/
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM2, ENABLE);
中断:
-
void TIM3_IRQHandler(void){
-
if( TIM_GetITStatus( TIM3, TIM_IT_Update )!= RESET ){
-
TIM_ClearITPendingBit( TIM3, TIM_IT_Update );
-
switch(DP){
-
case 1:{
-
PD3N=PD2N=PD1N=1;
-
PD3P=PD2P=PD1P=0;
-
PD1N=PD1P=1;
-
PD2N=PD2P=0;
-
DP=2;
-
break;
-
}case 2:{
-
PD3N=PD2N=PD1N=1;
-
PD3P=PD2P=PD1P=0;
-
PD2N=PD2P=1;
-
PD3N=PD3P=0;
-
DP=3;
-
break;
-
}case 3:{
-
PD3N=PD2N=PD1N=1;
-
PD3P=PD2P=PD1P=0;
-
PD3N=PD3P=1;
-
PD1N=PD1P=0;
-
DP=1;
-
break;
-
}
-
}
-
TIM3->ARR=fz_buf;
-
}
-
}
-
void TIM4_IRQHandler(void)
-
if( TIM_GetITStatus( TIM4, TIM_IT_Update )!= RESET ){
-
TIM_ClearITPendingBit( TIM4, TIM_IT_Update );
-
fz=500+8000*Get_Adc()/4095;
-
(责任编辑:admin)
|