定时器2外部触发输入
#include "stm32f10x.h" // Device header
void Timer_init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM2EN,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_InitStructure; // GPIO初始化结构体 //ENABLE适应DISENABLE,不适应
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // 管脚B5作为输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //时钟频率
GPIO_Init(GPIOB, &GPIO_InitStructure); // GPIO初始化,开启GPIOB,如果要开启A或者C,改变这里的GPIOA或者GPIOC
//定时器配置
TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x00);
TIM_TimeBaseInitTypeDef TIM_TimBaseInitStructure;
TIM_TimBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;//1分频
TIM_TimBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimBaseInitStructure.TIM_Period=10-1;
TIM_TimBaseInitStructure.TIM_Prescaler=1-1;
TIM_TimBaseInitStructure.TIM_RepetitionCounter=0;
TIM_TimeBaseInit(TIM2,&TIM_TimBaseInitStructure);
TIM_ClearFlag(TIM2,TIM_IT_Update);//手动将标志位清楚,避免刚初始化就进入一次中断的情况;
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM2,ENABLE);//开启定时器
}
/**
uint16_t Timer_GetCounter(void){
return TIM_GetCounter(TIM2);
}
*/