stm32定时器用于外部脉冲计数_第1页
stm32定时器用于外部脉冲计数_第2页
stm32定时器用于外部脉冲计数_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、因为用stm32f103c8作主控制器,来控制小车,小车的转速由两路光电编码盘输入(左右各一路).因此想到外部时钟触发模式(TIMETRClockMode2Config)。可以试好好久,发现TIM1不能计数,到网上查了很久,也没有找到相关的文章,开始怀疑TIM1是不是需要特殊设置。经过很久的纠结,终于找到了问题其实是我自己在GPIO设置的时候,后面的不小心覆盖了前面的了没想到自己也会犯这么SB的事情。现总结程序如下:第一步,设置GPIOGPIO_InitTypeDefGPIO_InitStructure;/*PA0,PA12->左右脉冲输入*/GPIO_InitStructure.GPI

2、O_Pin=GPIO_Pin_0|GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/50M时钟速度GPIO_Init(GPIOA,&GPIO_InitStructure);注意:(1)stm32flO3c8只有TIMl_ETR(PA12,Pin33),和TIM2_CHl_ETR(PA0,Pinl0)两个可以用。其它更多管脚的芯片,有更多的可以输入(如100管脚的有4个可以输入的);(2)外部时钟输入与中断无关;(3

3、)stm32fl03c8的这个两个应用中,不需要重映射。对于哪些需要重映射,参考数据手册。第二步:设置RCCRCC_ClocksTypeDefRCC_ClockFreq;SystemInit();源自system_stm32f10x.c文件,只需要调用此函数,则可完成RCC的配置.RCC_GetClocksFreq(&RCC_ClockFreq);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClo

4、ckCmd(RCC_APB2Periph_TIMl,ENABLE);RCC_APBlPeriphClockCmd(RCC_APBlPeriph_TIM2,ENABLE);第三步,设置定时器模式voidTIMl_Configuration(void)/只用一个外部脉冲端口TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/配置TIMERl作为计数器TIM_DeInit(TIMl);TIM_TimeBaseStructure.TIM_Period=0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler=0x00;TIM_Time

5、BaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);/TimebaseconfigurationTIM_ETRClockMode2Config(TIM1,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0);TIM_SetCounter(TIM1,0);TIM_Cmd(TIM1,ENABLE);voidTIM2_C

6、onfiguration(void)/只用一个外部脉冲端口TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;/配置TIMER2作为计数器TIM_DeInit(TIM2);TIM_TimeBaseStructure.TIM_Period=0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler=0x00;TIM_TimeBaseStructure.TIM_ClockDivision=0x0;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);/TimebaseconfigurationTIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0);TIM_SetCounter(TIM2,0);TIM_Cmd(TIM2,ENABLE);第四步,可以在主函数中读取计数器的值,其它的应用,就看具体的情况了。u16COU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论