在使用TIM的输入捕获来触发ADC的采样时,为什么配置TIM时不配置成输入捕获模式,而配置成输出比较模式、
如下配置,,
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv
=ADC_ExternalTrigConv_T2_CC2 ;(时钟TIM2通道2触发) ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel8 configuration */ ADC_RegularChannelConfig(ADC1, ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 DMA */ ADC_DMACmd(ADC1, ENABLE);
ADC_ExternalTrigConvCmd(ADC1, ENABLE); ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE); //配置TIM2 OC2 为PWM模式
TIM_OCStructInit(&TIM_OCInitStructure); //设置缺省值 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_Pulse
TIM_TimeBaseStructure.TIM_Period / 2;//点空比
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //TIM输出比较极性高(LOW也行)
TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable;//使能输出状态
= =
ADC_Channel_8,
1,
TIM_OC2Init(TIM2, &TIM_OCInitStructure); //初始化TIM2的2通道
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上
的
预装载
寄
存器
TIM_OC2PreloadConfig(TIM2,
TIM_OCPreload_Enable); //使能TIMx在CCR2上的预装载寄存器
TIM_Cmd(TIM2, ENABLE);//使能TIM1
TIM_CtrlPWMOutputs(TIM2, ENABLE);//TIM1 main Output Enable
(以上的方法为利用PWM的占空比波形进行输出,从而使T2获取一个向上的触发源)
而不将通道配成
/* TIM2 Input Capture Configuration */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection
TIM_ICSelection_DirectTI; //管脚与寄存器对应关系
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //输入模式下,捕获端口上的每一次边沿都触发一次捕获
TIM_ICInitStructure.TIM_ICFilter = 0x00 TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);//触发方式:触发信号的上升沿重新初始化计数器及触发寄存器的更新
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset); //触发方式
//选中触发信号(TRGI)的上升沿重初始化计数器并触发寄存器的更新
TIM_SelectMasterSlaveMode(TIM2,
TIM_MasterSlaveMode_Enable); //启动定时器的被动触发
TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE );
=
TIM_Cmd(TIM2, ENABLE);
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务