全球旧事资料 分类
stm32基于定时器计量外部脉冲的实现Gavi
选用stm32f103c8作主控制器来计量外部输入的脉冲数选用外部时钟触发模式(TIMETRClockMode2Co
fig下面介绍具体的实现:1、设置GPIO,根据硬件电路原理图,配置对应的资源IO引脚。GPIO_I
itTypeDefGPIO_I
itStructure
PA0PA12配置为脉冲输入引脚GPIO_I
itStructureGPIO_Pi
GPIO_Pi
_0GPIO_Pi
_12GPIO_I
itStructureGPIO_ModeGPIO_Mode_IN_FLOATINGGPIO_I
itStructureGPIO_SpeedGPIO_Speed_50MHz50M时钟速度GPIO_I
itGPIOAGPIO_I
itStructure注意:(1)stm32f103c8只有TIM1_ETRPA12Pi
33,和TIM2_CH1_ETRPA0Pi
10两个可以用。其它更多管脚的芯片,有更多的可以输入(如100管脚的有4个可以输入的);(2)外部时钟输入与中断无关;(3)stm32f103c8的这个两个应用中,不需要重映射。对于哪些需要重映射,参考数据手册。2、设置RCC,RCC_ClocksTypeDefRCC_ClockFreq
SystemI
it源自system_stm32f10xc文件只需要调用此函数则可完成RCC的配置RCC_GetClocksFreqRCC_ClockFreqRCC_APB2PeriphClockCmdRCC_APB2Periph_GPIOAENABLERCC_APB2PeriphClockCmdRCC_APB2Periph_GPIOBENABLERCC_APB2PeriphClockCmdRCC_APB2Periph_TIM1ENABLERCC_APB1PeriphClockCmdRCC_APB1Periph_TIM2ENABLE3、第三步,设置定时器模式voidTIM1_Co
figuratio
voidTIM_TimeBaseI
itTypeDef配置TIMER1作为计数器TIM_DeI
itTIM1TIM_TimeBaseStructureTIM_Period0xFFFFTIM_TimeBaseStructureTIM_Prescaler0x00TIM_TimeBaseStructureTIM_ClockDivisio
0x0TIM_TimeBaseStructure只用一个外部脉冲端口
fTIM_TimeBaseStructureTIM_Cou
terModeTIM_Cou
terMode_UpTIM_TimeBaseI
itTIM1TIM_TimeBaseStructureTimebaseco
figuratio
TIM_ETRClockMode2Co
figTIM1TIM_ExtTRGPSC_OFFTIM_ExtTRGPolarity_No
I
verted0TIM_SetCou
terTIM10TIM_CmdTIM1ENABLE
voidTIM2_Co
figuratio
void只用一个外部脉冲端口TIM_TimeBaseI
itTypeDef配置TIMER2作为计数器TIM_DeI
itTIM2TIM_TimeBaseStructureTIM_Period0xFFFFTIM_TimeBaseStructureTIM_Prescaler0x00TIM_TimeBaseStructureTIM_ClockDivisio
0x0TIM_TimeBaseStructureTIM_Cou
terModeTIM_Cou
terMode_UpTIM_TimeBaseI
itTIM2TIM_TimeBaseStructureTimebaseco
figuratio
TIM_ETRClockMode2Co
figTIM2TIM_ExtTRGPSC_OFFTIM_ExtTRGPolarity_No
I
verted0TIM_SetCou
terTIM20TIM_CmdTIM2ENABLE4、可以在主函数中读取计数器的值,其它的应用,就看具体的情况了。u16COUN10u16COUN20i
tmai
void系统初始化;while1COUN1TIM_GetCou
terTIM1COUN1TIM1CNTCOUN2TIM_GetCou
terTIM2COUN2TIM2CNTTIM_TimeBaseStructure
fr
好听全球资料 返回顶部