OpenEdv-开源电子网

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

定时器输入捕获 霍尔传感器接口

[复制链接]

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2012-8-12
在线时间
0 小时
发表于 2014-4-18 19:30:52 | 显示全部楼层 |阅读模式
代码如下,通道一设置成输入捕获,在没有信号输入的情况下会不断的进入中断,而且硬件仿真的结果,4个通道的终端标志都置位了。是在是调地头大了,求指点

//霍尔传感器接口配置
//霍尔传感器接在TIM3的CH1,2,3上
//硬件接口为PA6,7B0
void TIM3_Hall_Init(void)
{
RCC->APB1ENR|=1<<1;//TIM3时钟开启
RCC->APB2ENR|=1<<3;//PB口时钟开启
RCC->APB2ENR|=1<<2;//PA口时钟开启

GPIOA->CRL&=0xF00FFFFF;  //PA6,7
GPIOA->CRL|=0x08800000; //上拉/下拉输入模式
GPIOA->ODR|=0XC0; //上拉

GPIOB->CRL&=0XFFFFFFF0;//PB0
GPIOB->CRL|=0X00000008;//上拉、下拉模式
GPIOB->ODR|=0X1;//上拉

TIM3->SC=72-1;
TIM3->ARR=65535;//获得一个最大的计数周期,时间长于霍尔传感器上两次变化的时间间隔
TIM3->CR1&=~(1<<4);//计数器向上计数
TIM3->CR1&=~(3<<8);//不分频

TIM3->CR2|=1<<7;//TIMx_CH1,CH2,CH3引脚经异或后连到TI1输入
TIM3->SMCR|=4<<4;//触发选择:TI1的边沿检测器(TI1F_ED)
TIM3->SMCR|=4<<0;//复位模式 – 选中的触发输入(TRGI)的上升沿重新初始化计数器,并且产生一个更新寄存器的信号。
TIM3->SMCR|=1<<7;//触发输入(TRGI)上的事件被延迟了
TIM3->CR2|=5<<4;//OC2REF信号被用于作为触发输出(TRGO)

//通道1测量电机速度
TIM3->CCER|=3<<0;//捕获使能,捕获发生在IC1的下降沿;当用作外部触发器时,IC1反相
TIM3->CCMR1|=3<<0;//C1通道被配置为输入,IC1映射在TRC上???
TIM3->CCMR1&=~(3<<2);//捕获输入口上检测到的每一个边沿都触发一次捕获
TIM3->CCMR1|=10<<4;//输入捕获1滤波器设置
//通道2触发换相事件  
TIM3->CCMR1|=7<<12;//通道2设置成PWM2模式
TIM3->CCER|=1<<4;//开启- OC2信号输出到对应的输出引脚
TIM3->CCER&=~(1<<5);//高电平有效
TIM3->CCR2=1023;

// TIM3->DIER|=1<<6;//使能触发中断
TIM3->DIER|=1<<1;//允许捕获比较1中断
// TIM3->DIER|=1<<0;//允许更新中断
TIM3->CR1|=1<<0;//使能计数器
MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//
TIM3->SR=0;
}

//TIM3的中断服务函数
void TIM3_IRQHandler(void)
{
static u16 Speed=0; //暂存速度测量值
  if(TIM3->SR&(1<<1))       //产生比较/捕获事件1中断计数器溢出  
  {
printf("ok");
TIM3->SR&=~(1<<1);//清比较/捕获事件1中断标志
Speed=TIM3->CCR1;//读出捕获值,计算速度值
TIM1->CCR1+=pid_set(Speed); //针对PID输出对电机速度进行调节
TIM1->CCR2+=pid_set(Speed);
TIM1->CCR3+=pid_set(Speed);
  }  
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2012-8-12
在线时间
0 小时
 楼主| 发表于 2014-4-19 09:32:25 | 显示全部楼层
好诡异的,刚调出来,结果是
//通道1测量电机速度
TIM3->CCMR1|=3<<0;//C1通道被配置为输入,IC1映射在TRC上???
TIM3->CCMR1&=~(3<<2);//捕获输入口上检测到的每一个边沿都触发一次捕获
TIM3->CCMR1|=10<<4;//输入捕获1滤波器设置
TIM3->CCER|=1<<0;//捕获使能,捕获发生在IC1的上升沿
就是最后那句的顺序问题
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-4-18 23:02:37 | 显示全部楼层
一直会有printf ok出来么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2012-8-12
在线时间
0 小时
 楼主| 发表于 2014-4-19 09:12:34 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
嗯 就是这样
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-4-19 15:50:21 | 显示全部楼层
回复【4楼】小石头6123:
---------------------------------
恭喜
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2014-7-16
在线时间
13 小时
发表于 2014-7-21 18:25:52 | 显示全部楼层
帮忙问下为什么  TIM3->CCR2=1023要设成这样
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-7-29
在线时间
0 小时
发表于 2014-7-31 16:19:06 | 显示全部楼层
回复【4楼】小石头6123:
---------------------------------想问下,霍尔测速这个模块在接口配置完成之后还有哪些配置需要做的么,像主函数什么的该怎么写
回复 支持 反对

使用道具 举报

6

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-11-16
在线时间
2 小时
发表于 2014-8-12 20:36:48 | 显示全部楼层
回复【7楼】大就:
---------------------------------
然后你就可以在中断里加入闭环调速
回复 支持 反对

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2013-10-18
在线时间
5 小时
发表于 2014-11-23 21:56:10 | 显示全部楼层
楼主,这三个霍尔信号“或”了之后是触发TIM1/8的com事件的吧,你后来有没有研究呢,想找你要个模版的...不好意思做伸手党了呢
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2012-8-12
在线时间
0 小时
 楼主| 发表于 2014-11-28 21:00:36 | 显示全部楼层
各位大大就别问我要程序了 公司要求不能公开 望各位谅解 另外上面的程序应该是有问题的 我最后是用库写的 寄存器写出来的 波形一样但是还是会有问题
回复 支持 反对

使用道具 举报

6

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2015-4-30
在线时间
4 小时
发表于 2015-4-30 21:11:42 | 显示全部楼层
请问一下 这个CCR1为什么存的是速度呀
回复 支持 反对

使用道具 举报

10

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2012-8-12
在线时间
0 小时
 楼主| 发表于 2015-5-4 23:51:20 | 显示全部楼层
回复【11楼】DREAM1:
---------------------------------
CCR是调节占空比啊 电机都是这样调节的
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2017-1-8
在线时间
27 小时
发表于 2017-3-30 17:00:33 | 显示全部楼层
定时器?
回复 支持 反对

使用道具 举报

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
发表于 2017-3-30 17:46:00 | 显示全部楼层
你两个的程序不一样啊:
上面是TIM3->CCER |=3<<0;
下面是TIM3->CCER |1<<0;
这两个捕获的极性不一样的哇
飞飞飞飞飞
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2021-6-14
在线时间
5 小时
发表于 2021-6-18 00:51:44 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 18:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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