stm32 TIM3触发单通道ADC
作为初学者,刚接触stm32ADC,为了满足1500Hz信号的ADC转换,我最终决定采用stm32f103,f1的adc精度较高。结合网上许多发表有关定时器触发ADC模块的程序,我自己也尝试写了一个TIM3触发adc的程序。希望对大家有用,亲测有效。
思路如下:
TIM3触发ADC的采样,每隔0.2ms触发一次。
通过DMA传输,放到死循环,用USART不断的传给PC。
void time_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_TimeBaseInitStructure.TIM_Period = 199;//设置0.2ms采样一次
TIM_TimeBaseInitStructure.TIM_Prescaler = 71;
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分频,TIM3是通用定时器,基本定时器不用设置
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上扫描
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);//选择TRGO作为触发源为定时器更新时间
TIM_Cmd(TIM3,ENABLE);//使能定时中断
}
__IO uint16_t ADCvalue;
void ad