初级会员

- 积分
- 160
- 金钱
- 160
- 注册时间
- 2016-6-3
- 在线时间
- 42 小时
|
void tim(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
TIM_TimeBaseStructure.TIM_Period = 10000;
TIM_TimeBaseStructure.TIM_Prescaler =7199;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update);
/*Ñ¡Ôñupdate event×÷ÎaTRGO,àûóÃTIM3′¥·¢ADCí¨μà */
//ÿ¸ö¶¨ê±ÖüÆú½áêøoó′¥·¢ò»′Î
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3, ENABLE);
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 ,ENABLE);
}
void Adc_Config(void) //3õê¼»ˉADC1
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
//PA1
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOA,& GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1¤×÷Ä£ê½:ADC1oíADC21¤×÷Ôú¶àá¢Ä£ê½
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //Ä£êy×a»»1¤×÷Ôúμ¥í¨μàÄ£ê½
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //Ä£êy×a»»1¤×÷Ôúμ¥′Î×a»»Ä£ê½
//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //×a»»óéèí¼t¶ø2»êÇía2¿′¥·¢Æô¶ˉ
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;//Ñ¡ÔñTIM3×÷Îaía2¿′¥·¢Ô′
ADC_InitStructure.ADC_DataAlign= ADC_DataAlign_Right; //ADCêy¾Yóò¶ÔÆë
ADC_InitStructure.ADC_NbrOfChannel = 1; //Ë3Dò½øDD1æÔò×a»»μÄADCí¨μàμÄêyÄ¿
ADC_Init(ADC1, &ADC_InitStructure);
ADC_ExternalTrigConvCmd(ADC1,ENABLE);//2éóÃía2¿′¥·¢
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5);//adc×a»»ê±¼ä21us
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1); //¸′λD£×¼
while(ADC_GetResetCalibrationStatus(ADC1)); //μè′yD£×¼½áêø£¬D£×¼½áêø×′ì¬ÎaRESET
ADC_StartCalibration(ADC1); //ADD£×¼
while(ADC_GetCalibrationStatus(ADC1)); //μè′yD£×¼½áêø
}
void TIM3_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )
{
led_toggle();
adcx= ADC_GetConversionValue(ADC1);
adcy=(2.56*adcx/0x0fff-1.25)*150;
printf("%d\r\n",adcy);
TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update);
}
}
|
|