欢迎来到天天文库
浏览记录
ID:20980425
大小:352.50 KB
页数:3页
时间:2018-10-18
《stm32定时器触发ADC参考.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、STM32关于使用定时器触发ADC转换的解决办法和详细说明本人在使用STM32上的TIM2_CC2触发ADC转换的时候,发现始终调不出来,在网上找到了一些有价值的参考信息,然后在不懈的寻根究底下,终于找到问题的原因,废话少说,进入正题:以STM32ADC的常规通道为例(注入通道类似):如上图,STM32ADC的常规通道可以由以上6个信号触发任何一个,我们以使用TIM2_CH2触发ADC1,独立模式,每次仅测一条通道,则ADC的配置如下:(以下代码使用STM32固件库V3.5)voidADC_Configuration
2、(void){ADC_InitTypeDefADC_InitStructure;ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode=DISABLE;//关闭通道扫描模式ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//注意不要使用持续转换模式,否则只要触发一次,//后续的转换就会永不停歇(除非CONT清0),这样第一次以后的ADC,就不是由TIM2_CC
3、2来触发了ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T2_CC2;//配置TIM2_CC2为触发源ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置时钟(12MHz),在RC
4、C里面还应配置APB2=AHB时钟72MHz,ADC_RegularChannelConfig(ADC1,ADC_Channel_8,1,ADC_SampleTime_1Cycles5);ADC_Cmd(ADC1,ENABLE);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);//StartCalibrationregisterwhile(ADC_GetCalibratio
5、nStatus(ADC1));//waitingforfinishingthecalibrationADC_ExternalTrigConvCmd(ADC1,ENABLE);//设置外部触发模式使能(这个“外部“其实仅仅是相//对于ADC模块的外部,实际上还是在STM32内部)}这里再注意一点上面左图最顶上的那句话:当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。这跟下面的定时器2的正确配置关系很大。voidTIM2_Configuration(void){TIM_TimeBaseInitTy
6、peDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;TIM_TimeBaseStructure.TIM_Period=10000;//设置100ms一次TIM2比较的周期TIM_TimeBaseStructure.TIM_Prescaler=719;//系统主频72M,这里分频720,相当于100K的定时器2时钟TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.
7、TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//下面详细说明TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//TIM_OutputState_Disable;TIM_OCInitStructure.TIM_Pulse=5000;TIM_O
8、CInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;//如果是PWM1要为Low,PWM2则为HighTIM_OC2Init(TIM2,&TIM_OCInitStructure);TIM_Cmd(TIM2,ENABLE);TIM_InternalClockConfig(TIM2);TIM_OC2Pr
此文档下载收益归作者所有