OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4536|回复: 8

请问有会tim3以外tim读取旋转编码器的吗?(在线等)

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-7-28
在线时间
7 小时
发表于 2016-1-8 16:37:00 | 显示全部楼层 |阅读模式
10金钱
如题,本人遇到困境,经测试,只能用tim3计数器模式读取欧姆龙编码器,而其他tim一照着这个使用就傻逼了(下附tim3寄存器配置代码)
    RCC->APB1ENR|=1<<1;         
    RCC->APB2ENR|=1<<0;         
    RCC->APB2ENR|=1<<2;  
    GPIOA->CRL&=0X00FFFFFF;   
    GPIOA->CRL|=0X44000000;          
    TIM3->ARR=arr;           
    TIM3->PSC=psc;            
    TIM3->CCMR1 |= 1<<0;          
    TIM3->CCMR1 |= 1<<8;         
    TIM3->CCER |= 0<<1;               
    TIM3->CCER |= 0<<5;        
    TIM3->SMCR |= 3<<0;               
    TIM3->CR1 |= 1<<0;               

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-10 23:59:14 | 显示全部楼层
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-7-28
在线时间
7 小时
 楼主| 发表于 2016-1-11 10:01:26 | 显示全部楼层

原子哥啊,这个tim3有什么特别的地方吗,其他的试了很多次都不行,搞得现在一个编码器用tim3,一个用外部中断读取,外部中断误差好大,平均轮子每转偏差200个计数值
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2016-2-19
在线时间
16 小时
发表于 2016-2-19 21:34:52 | 显示全部楼层
tim3没什么特别的呀
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-2-21 23:16:47 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-4-16
在线时间
11 小时
发表于 2016-4-16 15:03:14 | 显示全部楼层
我也一样  就能用TIM5 其他的不行  
想一起用两个编码器怎么办啊?
回复

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2016-3-25
在线时间
16 小时
发表于 2016-4-16 15:54:52 | 显示全部楼层
是增量式还是绝对式?
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2016-4-16
在线时间
11 小时
发表于 2016-4-16 21:37:43 | 显示全部楼层
我的是增量式  我都想放弃了  用外部中断
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10887
金钱
10887
注册时间
2014-6-12
在线时间
1039 小时
发表于 2016-4-17 07:32:47 | 显示全部楼层
我用定时器4也成功。
//编码器初始化函数
void encoder_Init(void)
{
RCC->AHB1ENR|=1<<0;     //p135 使能PORTA时钟
RCC->AHB1ENR|=1<<1;     //p135 使能PORTB时钟

//RCC->APB2ENR|=1<<0;     //p146 AFIOEN辅助功能IO时钟使能
//RCC->APB2ENR|=1<<4;    //p70 使能PORTC 时钟
RCC->APB1ENR|=1<<1;     //p139 定时器3时钟使能
RCC->APB1ENR|=1<<2;     //p138 定时器4时钟使能

GPIO_Set(GPIOA,PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_OD,GPIO_SPEED_100M,GPIO_PUPD_PU);//PA6.PA7输入
//GPIOA->CRL&=0X00FFFFff;//PA6.PA7输入
  //GPIOA->CRL|=0X44000000;//浮空输入

GPIO_Set(GPIOB,PIN6|PIN7,GPIO_MODE_AF,GPIO_OTYPE_OD,GPIO_SPEED_100M,GPIO_PUPD_PU);//PB6.PB7输入
//GPIOB->CRL&=0X00FFFFff;//PB6.PB7输入
  //GPIOB->CRL|=0X44000000;//浮空输入



GPIO_AF_Set(GPIOA,6,2); //PA6,AF2
GPIO_AF_Set(GPIOA,7,2); //PA7,AF2
//AFIO->MAPR&=0XFFFFF0Ff; //p122 定时器3的重映像 CH1/PA6,CH2/PA7
//AFIO->MAPR|=0X00000000;

GPIO_AF_Set(GPIOB,6,2); //PB6,AF2
GPIO_AF_Set(GPIOB,7,2); //PB7,AF2
//AFIO->MAPR&=0XFFFF0fFf; //p122 定时器4的重映像 CH1/PA6,CH2/PA7
//AFIO->MAPR|=0X00000000;

//TIM3->ARR&=0XFFFFFfF0;   //自动重装载寄存器
//TIM3->ARR|=0X7fff;   //P293 自动重装载寄存器
//TIM4->ARR|=0X7fff;   //P293 自动重装载寄存器


TIM3->CCMR1|=1<<0;  //CC1S=01捕获/比较模式
  TIM3->CCMR1|=1<<8;  //CC2S=01

TIM4->CCMR1|=1<<0;  //CC1S=01捕获/比较模式
  TIM4->CCMR1|=1<<8;  //CC2S=01

TIM3->CCER|=0<<1;  //CC1P=0 捕获/比较使能
  TIM3->CCER|=0<<5;  //CC2P=0
//TIM3->CCER&=0XFFFFFfF0;   //CC1P和CC2P位
//TIM3->CCER|=0X00000001;   //P292 捕获使能

TIM4->CCER|=0<<1;  //CC1P=0 捕获/比较使能
  TIM4->CCER|=0<<5;  //CC2P=0
  

TIM3->SMCR|=3<<0; //SMS=011
//TIM3->SMCR|=6<<4; //TS=110

TIM4->SMCR|=3<<0; //

//RCC->APB1ENR|=1<<1; //p71 1-TIM3时钟使能 3-TIM5时钟使能

TIM3->CR1|=1<<0;;   //CEN使能
//TIM5->CR1|=0x01;    //p282 使能定时器3


TIM4->CR1|=1<<0;;   //CEN使能



}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 04:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表