STM32F4编码器测速

 使用外部时钟模式进行电机测速。


定时器配置

我使用的是TIM3的外部时钟模式1。      

使用外部时钟源模式,由于CubeMX的配置并不起作用,所以我自己对照参考手册自己配置寄存器。如下图

 

(外部时钟模式1)

(外部时钟模式2)

配置代码如下

  TIM3->SMCR |= 0x07;           // 选择外部时钟模式1
  TIM3->CCMR1 |= 0x01;  
  TIM3->CCMR1 &= ~0x02;         // TIM3_CCMR1 CC1S = 01, CC1 -> TI1
  TIM3->CCMR1 &= ~(0x0F << 4);  // TIM3_CCMR1 IC1F = 0000, 不滤波
  TIM3->CCER &= ~(0x01 << 1);   // TIM3_CCER CC1P = 0
  TIM3->CCER &= ~(0x01 << 3);   // TIM3_CCER CC1NP = 0, 上升盐
  TIM3->SMCR |= 0x07;           // TIM3_SMCR  SMS = 111, 外部时钟模式1
  TIM3->SMCR |= 0x05 << 4;
  TIM3->SMCR &= ~(0x01 << 5);   // TIM3_SMCR TS = 101, TI1FP1
  TIM3->CR1 |= 0x01;            // TIM3_CR1 CEN = 1, 开始计数

注意要根据自己的电机转速设置分频系数,可以直接设置PSC进行分频。


速度获取

可以使用一个另一个定时器中断读取计数器来获取单位时间内转速,从而计算出电机实际转速。(这部分程序在定时器中断里)

  speed = TIM3->CNT;
  TIM3->CNT = 0;

记得读完后计数器清零。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值