查看: 7560|回复: 10

STM32编码器接口模式--寄存器版 (转)

[复制链接]
发表于 2012-9-12 09:45:23 | 显示全部楼层 |阅读模式

STM32编码器接口模式--寄存器版
已测试通过,如果不能使用,那可能就是编码器信号干扰比较大。
void Encoder_Init(void)
{
/* TIM3 clock source enable */
RCC->APB1ENR|=1<<1;       //TIM3时钟使能
/* Enable GPIOA, clock */
RCC->APB2ENR|=1<<2;    //使能PORTA时钟

/* Configure PA.06,07 as encoder input */
GPIOA->CRL&=0XF0FFFFFF;//PA6
GPIOA->CRL|=0X04000000;//浮空输入
GPIOA->CRL&=0X0FFFFFFF;//PA7
GPIOA->CRL|=0X40000000;//浮空输入

/* Enable the TIM3 Update Interrupt */
//这两个东东要同时设置才可以使用中断
TIM3->DIER|=1<<0;   //允许更新中断   
TIM3->DIER|=1<<6;   //允许触发中断
MY_NVIC_Init(1,3,TIM3_IRQChannel,2);

/* Timer configuration in Encoder mode */
TIM3->PSC = 0x0;//预分频器
TIM3->ARR = ENCODER_TIM_PERIOD-1;//设定计数器自动重装值
TIM3->CR1 &=~(3<<8);// 选择时钟分频:不分频
TIM3->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式
  
TIM3->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1
TIM3->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2
TIM3->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1
TIM3->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2
TIM3->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器
TIM3->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效
TIM3->CNT = COUNTER_RESET;
TIM3->CR1 |= 0x01;    //CEN=1,使能定时器
}
专营STM8/32
QQ 940436962
http://y-ec.taobao.com
银洋出品 必是精品
ST专业代理
STM32正交编码器程序.zip (950.75 KB)

 楼主| 发表于 2012-10-8 15:31:46 | 显示全部楼层
嗯嗯嗯......大家顶起来撒
 楼主| 发表于 2012-10-11 11:53:11 | 显示全部楼层
没人需要吗
 楼主| 发表于 2012-10-15 11:29:37 | 显示全部楼层
没有一点防备
 楼主| 发表于 2012-10-22 11:35:59 | 显示全部楼层
发表于 2012-10-24 09:39:04 | 显示全部楼层
mark
发表于 2012-10-26 09:33:56 | 显示全部楼层
看看
 楼主| 发表于 2012-10-30 11:31:10 | 显示全部楼层
必须的嘛
 楼主| 发表于 2012-10-30 11:33:16 | 显示全部楼层
亲爱的顶起来
发表于 2012-11-22 14:04:49 | 显示全部楼层
mark
发表于 2016-11-25 22:09:47 | 显示全部楼层
谢谢分享,正好用到。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表