sTM32 使用TIMx_CH1作為 Tx1F_ED 計數(shù)器時鐘
環(huán)境:iar arm 5.3
stm32f103vbt6
使用PA.8 外部輸入10Mhz的方波??蓮膕ystick中斷得到數(shù)據(jù)4.
4×5000(預(yù)分頻值)×1000(tick中斷時間)=20MHz
屬于雙邊沿檢測,一個PA.8個脈沖有2個邊沿,所以時鐘加倍。
由于使用了TI1F_ED它的結(jié)構(gòu)如下:
voidRCC_Configuration(void){/*SetupSTM32system(clock,PLLandFlashconfiguration)*/SystemInit();/*EnableGPIOA,GPIOCandUSART1clock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA"RCC_APB2Periph_GPIOC|RCC_APB2Periph_TIM1,ENABLE);}GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);voidTIM1_Init(void){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period=65535;TIM_TimeBaseStructure.TIM_Prescaler=5000;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);TIM_TIxExternalClockConfig(TIM1,TIM_TIxExternalCLK1Source_TI1ED,TIM_ICPolarity_Rising,0);TIM_Cmd(TIM1,ENABLE);}intmain(void){RCC_Configuration();GPIO_Config();TIM1_Init();/*SetupSysTickTimerfor1msecinterrupts*/if(SysTick_Config(SystemFrequency/1000)){/*Captureerror*/while(1);}while(1){}}voidSysTick_Handler(void){staticu32i=0;if(i==0){i=1;gusData=0;TIM_SetCounter(TIM1,0);}else{i=0;gusData=TIM_GetCounter(TIM1);}}