OpenEdv-开源电子网

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

分享定时器输入捕获程序,直接操作寄存器(看手册配置成功)

[复制链接]

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
发表于 2012-2-29 11:08:27 | 显示全部楼层 |阅读模式

 刚刚开始做定时器输入捕获的时候在这个论坛上找了好久,都没有人分享,也有很多人问,无奈自己动手写了。花了一天的时间,这个东西真的不好写了,对比了库的例子,仿真,等。可以说付出了很多。现在完成了和大家分享。希望大家多多支持。

程序说明:1、程序中定时器4的PB6用于输出频率为1K,占空比为50%的PWM信号。
               2、定时器2的PA0用于输入捕获,当程序下到板子上,只有两个脚连在一起才会发生捕获。
               3、串口用于发送捕获的值到PC机上。


我在这里再声明一下,如果你捕获的信号不是1K,那要先经过计算ARR和分频,在这里改Capture_Init(2000,72-1);

定时器输入捕获.txt

2.43 KB, 下载次数: 3528

?成功只是最后一小步的坚持!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-3 22:32:54 | 显示全部楼层
回复【8楼】冰是睡着的水:
---------------------------------
人家改了代码没改注释呢...
这种现象很常见的吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-29 11:09:59 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-29 11:10:10 | 显示全部楼层
#include "stm32f10x_lib.h"
#include "sys.h"
#include "delay.h" //延时子函数
#include "usart.h"

u16   IC2Value;
u16   DutyCycle;
u16   Frequency;

void WM_Init(u16 arr,u16 psc);
void Capture_Init(u16 arr,u16 psc);
int  main(void)
{
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);//延时函数初始化
 uart_init(72,9600);
 WM_Init(1500,72-1);  //不分频。PWM频率=72000/1440=5Khz 
 Capture_Init(2000,72-1);
 while(1)
 {
  printf("suqingxiao\r\n");
delay_ms(100);
 }
}

//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void WM_Init(u16 arr,u16 psc)
{    
//此部分需手动修改 IO口设置  
RCC->APB2ENR|=1<<0;    //  
RCC->APB1ENR|=1<<2;       //TIM4 时钟使能 
RCC->APB2ENR|=1<<3;    //使能PORTB时钟 
  
GPIOB->CRL&=0XF0FFFFFF;//PB6 输出  
GPIOB->CRL|=0X0B000000;//复用功能输出       
GPIOB->ODR|=1<<6;//PB6 上拉   
  
TIM4->ARR=arr;//设定计数器自动重装值   
TIM4->SC=psc;//预分频器不分频  

TIM4->CCMR1|=7<<4;  //CH1 WM2模式      
TIM4->CCMR1|=1<<3; //CH1 预装载使能       
TIM4->CCER|=1<<0;  //OC1  输出使能      
TIM4->CR1=0x0080;  //ARPE使能   

TIM4->CR1|=0x01;    //使能定时器 3  

TIM4->CCR1   = 500;  //占空比初值 =  1440*50% = 720                    



void Capture_Init(u16 arr,u16 psc)
{
//此部分需手动修改 IO口设置  
RCC->APB2ENR|=1<<0;    //  
RCC->APB1ENR|=1<<0;       //TIM2 时钟使能 
RCC->APB2ENR|=1<<2;    //使能PORTA时钟 
   
  TIM2->ARR=arr;  //设定计数器自动重装值//刚好1ms    
TIM2->SC=psc;  //预分频器,

GPIOA->CRL&=0XFFFFFFF0;//PA0 输出  
GPIOA->CRL|=0X00000004;//复用功能输出       
GPIOA->ODR|=1<<0;//PA0 上拉
  
TIM2->SMCR|=0x00D4; 
//TIM2->SMCR|= 1<<5; //MSM=1 主/从模式 
//TIM2->SMCR|= 5<<4; //TS=101 触发选择 
//TIM2->SMCR|= 4<<0; //SMS=100 复位模式

TIM2->CCMR1|=1<<0;//CC1S=01 选择输入端  
TIM2->CCMR1|=3<<4; //IC1F=0011配置输入滤波器
TIM2->CCER|=0<<1; //CC1P=0 选择有交转换边沿
TIM2->CCMR1|=0<<2; //IC1PS=00 配置输入分频 
TIM2->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中

TIM2->DIER|=1<<1;   //允许更新捕获中断
   
TIM2->CR1|=0x01;    //使能定时器2
   MY_NVIC_Init(1,3,TIM2_IRQChannel,2);//抢占1,子优先级3,组2  
}

//定时器2中断服务程序  
void TIM2_IRQHandler(void)
{              
IC2Value = TIM2->CCR1;//读取CCR1也可以清CC1IF标志位
printf("IC2Value = %d\r\n",1000000/IC2Value);               
TIM2->SR&=~(1<<1);//清除中断标志位      
}




我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-29 11:13:57 | 显示全部楼层
要的就是这种精神。值得学习!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-2-29 12:36:11 | 显示全部楼层
熬出来了有点成就感,熬不出来差点抓破脑瓜,呵。
?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

20

主题

562

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
670
金钱
670
注册时间
2012-2-28
在线时间
0 小时
发表于 2012-3-2 17:23:57 | 显示全部楼层
问一下,那个滤波器有什么作用啊???一直对定时器的滤波器不解???
努力,前进。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-2 17:43:54 | 显示全部楼层
滤波对输入来说的吧。
比如你要用定时器计数外部的一个信号。这个信号正常的电平宽度是5ms高,5ms低。但是信号可能会被干扰,会出现2ms高,3ms低等不正常的信号。此时你就可以通过设置滤波器,让脉宽必须大于4ms的信号,才算是正常信号,这样就不会误计数了。从而起到滤波作用。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-3-3 20:49:51 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我这个不懂,,看了很久了  WM_Init(1500,72-1);  //不分频。PWM频率=72000/1440=5Khz  不是分频72吗,频率为1MHZ吗?
TIM4->CCR1   = 500;  //占空比初值 =  1440*50% = 720     这个又不懂,,
很喜爱电子行业
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-3-3 23:21:05 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
吓了
很喜爱电子行业
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2012-2-26
在线时间
0 小时
发表于 2012-3-24 16:59:56 | 显示全部楼层
回复【5楼】suqingxiao:
---------------------------------
 WM_Init(1500,72-1);  //不分频。PWM频率=72000/1440=5Khz  不是分频72吗,频率为1MHZ吗?
TIM4->CCR1   = 500;  //占空比初值 =  1440*50% = 720    

 suqingxiao ,可以解析一下这里吗?看了很久都看不懂哦。。谢谢万分
他山之石,可以攻玉.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-24 17:33:53 | 显示全部楼层
回复【11楼】内有元基:
---------------------------------
这里可能是注释有误,自己用mdk的软件仿真一看立马就知道结果了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2012-2-26
在线时间
0 小时
发表于 2012-3-24 21:37:22 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
请问原子哥,是不是15k??这个方法在计算在12章PWM输出的时候也是正确的,你的程序应该是80k,我用示波器检验过,是正确的。
他山之石,可以攻玉.
回复 支持 反对

使用道具 举报

2

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2012-2-23
在线时间
19 小时
发表于 2012-4-8 20:53:56 | 显示全部楼层
请问这个程序硬件仿真时在逻辑分析窗口设置信号引脚时总是提示是未知信号,是怎么回事?
软件仿真正常。
心之所向,无惧无悔。
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-4-9 12:41:51 | 显示全部楼层
没有用引脚仿真,程序是直接在板子上验证的。
?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2011-9-28
在线时间
1 小时
发表于 2012-4-28 14:14:38 | 显示全部楼层
非常感谢你的分享~~~~~~~~
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2012-2-16
在线时间
0 小时
发表于 2012-4-30 22:41:33 | 显示全部楼层
求助:为啥我串口打印出来的值一直是666那?
我以前修改过    在主函数里写
if(dir)led0pwmval++;
else led0pwmval--;

if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
 
TIM4->CCR1=led0pwmval;

在void Capture_Init(u16 arr,u16 psc) 里也做了修改
然后串口就可以跟随打印出0~300,
最后程序丢了,现在怎么改都不行了!!

不知道怎么回事啊

求助解决啊
回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
金钱
393
注册时间
2012-3-4
在线时间
69 小时
发表于 2012-5-1 22:51:43 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-5-2 09:49:42 | 显示全部楼层

打印出666说明你捕获的信号是一直保持不变的,你捕获到的信号是对的。你最好用示波器看一下输入信号,再看你捕获的值是不是和输入信号是相同的。

 

?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

59

主题

189

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
451
金钱
451
注册时间
2012-4-11
在线时间
1 小时
发表于 2012-5-3 21:18:07 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
1.这段程序是不是每次上升沿时都发生捕捉事件啊??并且产生中断通过printf输出??
2.在中断里读取CCR1时,CCR1的数值是CLK始终的个数还是到达2000之后累计的数值那??
谢谢!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-5-3 23:25:48 | 显示全部楼层
还是那样,自己动手找答案.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2011-11-21
在线时间
0 小时
发表于 2012-5-4 12:14:00 | 显示全部楼层
顶一下,正好下面做示波器要用到,
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-5-4 12:39:07 | 显示全部楼层
回复【20楼】shenhao7752376:
---------------------------------
1、是每个上升沿都会捕获产生中断,打印是为了测试方便。
2、你读CCR1时它自动会清0清中断标志,CCR1的值是由CLK来的,你可以看手册上的时序图。
?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

2

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2012-2-20
在线时间
0 小时
发表于 2012-5-16 13:47:40 | 显示全部楼层
首先感谢楼主的分享 这鸟东西我熬了三天了都没整出来 都快疯掉了 现在有了楼主的分享就像抓住了救命的稻草 有把我拖回人间了 
生活就是 漂泊不定 一直寻找那甜美的港湾
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-5-19 08:54:28 | 显示全部楼层
我也熬了一天,看手册再测试,一直到晚上还加班,不过第二天测试就成功了。真的不容易。
?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

20

主题

111

帖子

2

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-10-18
在线时间
9 小时
 楼主| 发表于 2012-5-25 11:23:54 | 显示全部楼层
我在这里再声明一下,如果你捕获的信号不是1K,那要先经过计算ARR和分频,在这里改Capture_Init(2000,72-1); 
?成功只是最后一小步的坚持!
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-8-28
在线时间
4 小时
发表于 2012-10-26 08:32:16 | 显示全部楼层
学习下!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-11-8
在线时间
0 小时
发表于 2012-11-8 13:29:00 | 显示全部楼层
谢谢,正好用上。收藏了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2011-9-27
在线时间
0 小时
发表于 2012-11-26 16:17:07 | 显示全部楼层
谢谢楼主喽,学习了!
回复 支持 反对

使用道具 举报

16

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2012-10-29
在线时间
0 小时
发表于 2012-11-27 18:57:05 | 显示全部楼层
请教下版主程序:TIM3->SMCR|=0x00D4; 貌似在捕获时没用啊,
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-9-20
在线时间
0 小时
发表于 2013-1-8 14:32:06 | 显示全部楼层
回复【26楼】suqingxiao:
---------------------------------
我不明白捕捉的信号不是跟输入进来的频率一样的么 怎么还单独算出来的1KHZ呢?捕捉到的应该是输出PWM的频率才是吧?
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-1-9 10:51:32 | 显示全部楼层
楼主不是我的救命稻草了,简直是草堆,嘿嘿。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-6-17
在线时间
0 小时
发表于 2013-6-17 20:59:37 | 显示全部楼层
想问一下如果测量频率很低应该怎么修改,比如10Hz。
回复 支持 反对

使用道具 举报

25

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
金钱
243
注册时间
2013-4-20
在线时间
0 小时
发表于 2013-7-30 15:38:08 | 显示全部楼层
回复【33楼】梧桐雨0113:
---------------------------------
可以的。Capture_Init(64000,120-1);//预装载值最大为65536,
比如你要测量到10HZ,那么设预分频数为psc,预装载数为arr,则72000000/psc为测频量程;则每个计数值为量程除以arr,那么10HZ最少预装载值为:arr=(72000000/psc)/10HZ。例如配置Capture_Init(64000,120-1);这样就可以测量到10HZ了。
回复 支持 反对

使用道具 举报

25

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
金钱
243
注册时间
2013-4-20
在线时间
0 小时
发表于 2013-7-30 16:47:47 | 显示全部楼层
回复【30楼】天亮了187:
---------------------------------
回复【21楼】正点原子:
---------------------------------
TIM3->SMCR|=0x00D4; 貌似在捕获时没用啊。这是干什么用的?跟从模式有关吗?去掉的话测频就没用了。。。
回复 支持 反对

使用道具 举报

9

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-8-9 11:10:24 | 显示全部楼层
正在找相关的程序,谢谢楼主
回复 支持 反对

使用道具 举报

7

主题

170

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-8-9
在线时间
3 小时
发表于 2013-8-9 17:55:01 | 显示全部楼层
靴子了,学习了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-2-26
在线时间
0 小时
发表于 2013-11-29 16:32:28 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥 我用上面这段代码下进去仿真感觉进不去中断啊  串口里没有中断里面的打印数据,怎么回事啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-29 23:19:49 | 显示全部楼层
回复【38楼】夏南烟靖:
---------------------------------
参考下我们战舰板的输入捕获实验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2012-10-7
在线时间
0 小时
发表于 2013-12-14 03:54:02 | 显示全部楼层
果然是大神我正在做一个频率测量,我初步想的就是用的是定时器中断
成功的花,人们只惊羡他现实的惊艳,然而当初她的芽儿浸透了奋斗的泪泉,洒遍了牺牲的血雨!!!!!
回复 支持 反对

使用道具 举报

4

主题

84

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2013-10-17
在线时间
9 小时
发表于 2014-4-28 16:08:09 | 显示全部楼层
留下,改天测试一下
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-10-8
在线时间
0 小时
发表于 2014-5-16 22:18:21 | 显示全部楼层
不懂为什么信号一定要是1K啊,我是要测频率的。既然是要测频率的那输入频率就不是想多少就多少的嘛。怎么破
回复 支持 反对

使用道具 举报

13

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-4
在线时间
0 小时
发表于 2014-5-17 20:49:41 | 显示全部楼层
回复【26楼】suqingxiao:
--------------------------回复【39楼】正点原子:
原子哥,我想问一下,他这里为什么只开了一个CH1的捕获中断TIM2->DIER|=1<<1;   //允许更新捕获中断、这里的意思是只有上升沿的时候才进入中断的吧,CCR2里的值是不是只要有下降沿到来,就自动捕获进去了。至于我们有没有开中断,其实里面的值已经捕获成功了?我这样理解对吗?
回复 支持 反对

使用道具 举报

13

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-4
在线时间
0 小时
发表于 2014-5-17 23:19:11 | 显示全部楼层
回复【26楼】suqingxiao:
---------------------------------
楼主,我发现有一个问题。如果你用信号源输入的时候,会发现占空比一直都是比实际少1。如果你用STM32的PWM输入的话,如果设为PWM2模式的时候,占空比是正常的,如果用PWM1模式的话,占空比依然是比实际少1.。
我这是为什么?为什么PWM的输出模式会影响
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-18 00:12:53 | 显示全部楼层
回复【43楼】一蓑、烟雨。:
---------------------------------
这句话是开启捕获中断,至于上升沿还是下降沿,看你的设置了。
完成一个电平(高电平或者低电平)的捕获,必定需要2次捕获,所以在第一次捕获进入中断后,要修改捕获边沿为相反的方向。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-4
在线时间
0 小时
发表于 2014-5-18 09:05:59 | 显示全部楼层
回复【45楼】正点原子:
---------------------------------
原子哥,在打扰一下。
TIM2->DIER|=1<<1; 这个只是开启CH1的捕获中断,而CH1的捕获中断只有设为上升沿捕获,而CH2的捕获中断只设为下降沿捕获,但只开启了CH1的捕获中断,那CH2的下降沿捕获中断没有开啊?也没有在中断函数中开CH2的捕获中断、那这是为什么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-20 00:06:36 | 显示全部楼层
回复【46楼】一蓑、烟雨。:
---------------------------------
一样的,上升沿/下降沿,都叫捕获中断。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-4-4
在线时间
0 小时
发表于 2014-5-21 14:24:11 | 显示全部楼层
回复【47楼】正点原子:
--------------------------------
原子哥,我想你理解错了。我是说,程序中只开了CH1的捕获中断,并没有开CH2的捕获中断,那我们怎么知道什么时候需要去捕获CH2通道的值CCR1
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-21 22:20:31 | 显示全部楼层
在中断里面读取CCR1即可.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2014-3-19
在线时间
0 小时
发表于 2014-7-9 18:45:30 | 显示全部楼层
谢谢分享,学习下
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 21:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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