OpenEdv-开源电子网

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

输入捕获中断函数的代码,实在是没看懂,请大神帮忙理理思路。

[复制链接]

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
发表于 2014-10-10 09:40:46 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]u8 TIM5CH1_CAPTURE_STA=0; //输入捕获状态 u16 TIM5CH1_CAPTURE_VAL; //输入捕获值 //定时器5中断服务程序 void TIM5_IRQHandler(void) { if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获 { if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) { if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了 { if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了 { TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次 TIM5CH1_CAPTURE_VAL=0XFFFF; }else TIM5CH1_CAPTURE_STA++; } } if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获1发生捕获事件 { if(TIM5CH1_CAPTURE_STA&0X40) //捕获到一个下降沿 { TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次上升沿 TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5); TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获 }else //还未开始,第一次捕获上升沿 { TIM5CH1_CAPTURE_STA=0; //清空 TIM5CH1_CAPTURE_VAL=0; TIM_SetCounter(TIM5,0); TIM5CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //CC1P=1 设置为下降沿捕获 } } } TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位 } [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

你代码的17,18,19,26,31,34自己仔细看下代码吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2014-10-10 09:40:47 | 显示全部楼层
你代码的17,18,19,26,31,34自己仔细看下代码吧
回复

使用道具 举报

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
 楼主| 发表于 2014-10-10 09:42:06 | 显示全部楼层
在执行过程中,不知道 TIM5CH1_CAPTURE_STA的值是如何变的
回复

使用道具 举报

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
 楼主| 发表于 2014-10-10 11:05:09 | 显示全部楼层
回复【3楼】login_FAE:
---------------------------------
在开始TIM5CH1_CAPTURE_STA=0,那么TIM5CH1_CAPTURE_STA&0X40为假,怎么会执行第14~20行语句呢
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2014-10-10 11:44:08 | 显示全部楼层
if((TIM5CH1_CAPTURE_STA&0X80)==0)为真 执行里面的语句,
回复

使用道具 举报

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
 楼主| 发表于 2014-10-10 12:00:42 | 显示全部楼层
为什么长按WK_UP键,得到的时间是一样的?
回复

使用道具 举报

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
 楼主| 发表于 2014-10-10 16:01:33 | 显示全部楼层
回复【5楼】login_FAE:
---------------------------------
为什么长按WK_UP键,得到的时间是一样的?
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-10-10 16:24:42 | 显示全部楼层
要结合主函数来分析,把程序下载到板子,实操一下,根据现象多想想就知道了。个人觉得这个函数很巧妙。
手艺人要内外兼修。
回复

使用道具 举报

29

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2014-9-11
在线时间
8 小时
 楼主| 发表于 2014-10-10 16:37:38 | 显示全部楼层
短按WK_UP键,得到的时间不一样,为什么长按WK_UP键得到的时间是一样的?

回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2014-10-10 19:02:20 | 显示全部楼层
回复【9楼】心染红尘:
---------------------------------
 if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
                {
                    TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
                    TIM5CH1_CAPTURE_VAL=0XFFFF;
                }else TIM5CH1_CAPTURE_STA++;


temp=TIM5CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出时间总和
temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间
printf("HIGH:%d us\r\n",temp);//打印总的高点平时间
自己算下
回复

使用道具 举报

5

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2014-10-21
在线时间
31 小时
发表于 2014-10-28 19:13:31 | 显示全部楼层
TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次上升沿
这句话不是应该表示成功完成一次捕获么,为什么说是成功捕获到一次上升沿呢?
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-10-2
在线时间
0 小时
发表于 2014-10-28 19:52:20 | 显示全部楼层
仔细看看STM32开发指南216页的:表 15.3.1 TIM5CH1_CAPTURE_STA 各位描述
我也是刚刚看懂
TO楼上,捕捉到下降沿之后,就是成功的   完成了  一次上升沿捕获,这样明白点了咩?

PS:但还是不明白(1)TIM5CH1_CAPTURE_STA  是直接当寄存器用的吗?
(2)问个不相关的问题,声明变量都有哪些?extern和status区别与用法?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-28 23:00:04 | 显示全部楼层
回复【12楼】明月杯中曳,遥思梦不解:
---------------------------------
1,是人为定义的一个变量,各个位有特定的意义,就相当于寄存器了。
2,百度学习
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-17 15:53:08 | 显示全部楼层
楼主,您现在看懂原子的这段代码了吗,就是您贴出的那段。。。。。本人正在痛苦纠结中,求指点一二呀
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-17 16:00:46 | 显示全部楼层
还有,这个捕获程序,我用PWM波输入时串口打印就时0us,或者偶尔出来一个65536us;但用按键方式是,串口输出的就是按键高电平时间。
PS:4194303us就是3fffff。总觉得这个数跟中断服务程序中设置的0X3F有某种关联。。。。。不知道对不对
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-19 14:50:05 | 显示全部楼层
好吧,原子哥是不是太忙,顾不上看我这个问题呀。我用原子哥的这段代码,现在的结果只能输出65536的倍数,这是怎么回事呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-19 22:37:09 | 显示全部楼层
回复【16楼】青山小树:
---------------------------------
确实很忙,你直接下载我们例程测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-25 17:07:43 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原子哥,打扰一下哈,同一个定时器可否边产生PWM波边计数(计数自己产生了多少个PWM波)?
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-25 17:08:40 | 显示全部楼层
回复【18楼】青山小树:
---------------------------------
是STM32F103
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-25 22:39:01 | 显示全部楼层
回复【18楼】青山小树:
---------------------------------
可以,输出PWM的同时,设置定时器的更新中断,每进入一次中断,就是一个PWM。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-29 14:27:05 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
谢谢原子哥这么忙还帮我回复。我已经按照您的提示这么做了。TIM3产生PWM波,每产生一个PWM波就计数一个;TIM2捕获PWM波,每捕获一个(高电平)PWM波就计数一个。整个脉宽周期为180ms,高电平135ms。结果捕获的个数小于产生的个数。而且,捕丢的位置貌似没什么规律性,某次上电试验中每14个位置就丢一次,下一次试验中可能每5个PWM波就捕丢一次;再下一次又是另一数或者没规律。这是什么原因呢?贴出串口的一部分数据给您看。
    能帮我提点一下这是什么原因呢,要怎么解决呢



产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=2 
产生PWM波个数:pwm_in=3 
产生PWM波个数:pwm_in=3 
产生PWM波个数:pwm_in=3 
产生PWM波个数:pwm_in=3 
产生PWM波个数:pwm_in=3 
HIGH:134984 us
捕获高电平次数:cout= 1 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=4 
产生PWM波个数:pwm_in=5 
产生PWM波个数:pwm_in=5 
产生PWM波个数:pwm_in=5 
产生PWM波个数:pwm_in=5 
HIGH:134984 us
捕获高电平次数:cout= 2 
产生PWM波个数:pwm_in=6 
产生PWM波个数:pwm_in=6 
产生PWM波个数:pwm_in=6 
产生PWM波个数:pwm_in=6 
产生PWM波个数:pwm_in=6 
HIGH:134984 us
捕获高电平次数:cout= 3 
产生PWM波个数:pwm_in=7 
产生PWM波个数:pwm_in=7 
产生PWM波个数:pwm_in=7 
产生PWM波个数:pwm_in=7 
产生PWM波个数:pwm_in=7 
HIGH:134984 us
捕获高电平次数:cout= 4 
产生PWM波个数:pwm_in=8 
产生PWM波个数:pwm_in=8 
产生PWM波个数:pwm_in=8 
产生PWM波个数:pwm_in=8 
HIGH:134984 us
捕获高电平次数:cout= 5 
产生PWM波个数:pwm_in=9 
产生PWM波个数:pwm_in=9 
产生PWM波个数:pwm_in=9 
产生PWM波个数:pwm_in=9 
产生PWM波个数:pwm_in=9 
HIGH:134984 us
捕获高电平次数:cout= 6 
产生PWM波个数:pwm_in=10 
产生PWM波个数:pwm_in=10 
产生PWM波个数:pwm_in=10 
产生PWM波个数:pwm_in=10 
HIGH:134984 us
捕获高电平次数:cout= 7 
产生PWM波个数:pwm_in=11 
产生PWM波个数:pwm_in=11 
产生PWM波个数:pwm_in=11 
产生PWM波个数:pwm_in=11 
产生PWM波个数:pwm_in=11 
HIGH:134984 us
捕获高电平次数:cout= 8 
产生PWM波个数:pwm_in=12 
产生PWM波个数:pwm_in=12 
产生PWM波个数:pwm_in=12 
产生PWM波个数:pwm_in=12 
HIGH:134984 us
捕获高电平次数:cout= 9 
产生PWM波个数:pwm_in=13 
产生PWM波个数:pwm_in=13 
产生PWM波个数:pwm_in=13 
产生PWM波个数:pwm_in=13 
产生PWM波个数:pwm_in=13 
HIGH:134984 us
捕获高电平次数:cout= 10 
产生PWM波个数:pwm_in=14 
产生PWM波个数:pwm_in=14 
产生PWM波个数:pwm_in=14 
产生PWM波个数:pwm_in=14 
HIGH:134984 us
捕获高电平次数:cout= 11 
产生PWM波个数:pwm_in=15 
产生PWM波个数:pwm_in=15 
产生PWM波个数:pwm_in=15 
产生PWM波个数:pwm_in=15 
产生PWM波个数:pwm_in=15 
HIGH:134984 us
捕获高电平次数:cout= 12 
产生PWM波个数:pwm_in=16 
产生PWM波个数:pwm_in=16 
产生PWM波个数:pwm_in=16 
产生PWM波个数:pwm_in=16 
HIGH:134984 us
捕获高电平次数:cout= 13 
产生PWM波个数:pwm_in=17 
产生PWM波个数:pwm_in=17 
产生PWM波个数:pwm_in=17 
产生PWM波个数:pwm_in=17 
产生PWM波个数:pwm_in=17 
HIGH:134984 us
捕获高电平次数:cout= 14 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=18 
产生PWM波个数:pwm_in=19 
产生PWM波个数:pwm_in=19 
产生PWM波个数:pwm_in=19 
产生PWM波个数:pwm_in=19 
HIGH:134984 us
捕获高电平次数:cout= 15 
产生PWM波个数:pwm_in=20 
产生PWM波个数:pwm_in=20 
产生PWM波个数:pwm_in=20 
产生PWM波个数:pwm_in=20 
HIGH:134984 us
捕获高电平次数:cout= 16 
产生PWM波个数:pwm_in=21 
产生PWM波个数:pwm_in=21 
产生PWM波个数:pwm_in=21 
产生PWM波个数:pwm_in=21 
产生PWM波个数:pwm_in=21 
HIGH:134984 us
捕获高电平次数:cout= 17 
产生PWM波个数:pwm_in=22 
产生PWM波个数:pwm_in=22 
产生PWM波个数:pwm_in=22 
产生PWM波个数:pwm_in=22 
HIGH:134984 us
捕获高电平次数:cout= 18 
产生PWM波个数:pwm_in=23 
产生PWM波个数:pwm_in=23 
产生PWM波个数:pwm_in=23 
产生PWM波个数:pwm_in=23 
产生PWM波个数:pwm_in=23 
HIGH:134984 us
捕获高电平次数:cout= 19 
产生PWM波个数:pwm_in=24 
产生PWM波个数:pwm_in=24 
产生PWM波个数:pwm_in=24 
产生PWM波个数:pwm_in=24 
HIGH:134984 us
捕获高电平次数:cout= 20 
产生PWM波个数:pwm_in=25 
产生PWM波个数:pwm_in=25 
产生PWM波个数:pwm_in=25 
产生PWM波个数:pwm_in=25 
产生PWM波个数:pwm_in=25 
HIGH:134984 us
捕获高电平次数:cout= 21 
产生PWM波个数:pwm_in=26 
产生PWM波个数:pwm_in=26 
产生PWM波个数:pwm_in=26 
产生PWM波个数:pwm_in=26 
HIGH:134984 us
捕获高电平次数:cout= 22 
产生PWM波个数:pwm_in=27 
产生PWM波个数:pwm_in=27 
产生PWM波个数:pwm_in=27 
产生PWM波个数:pwm_in=27 
HIGH:134984 us
捕获高电平次数:cout= 23 
产生PWM波个数:pwm_in=28 
产生PWM波个数:pwm_in=28 
产生PWM波个数:pwm_in=28 
产生PWM波个数:pwm_in=28 
产生PWM波个数:pwm_in=28 
HIGH:134984 us
捕获高电平次数:cout= 24 
产生PWM波个数:pwm_in=29 
产生PWM波个数:pwm_in=29 
产生PWM波个数:pwm_in=29 
产生PWM波个数:pwm_in=29 
HIGH:134984 us
捕获高电平次数:cout= 25 
产生PWM波个数:pwm_in=30 
产生PWM波个数:pwm_in=30 
产生PWM波个数:pwm_in=30 
产生PWM波个数:pwm_in=30 
产生PWM波个数:pwm_in=30 
HIGH:134984 us
捕获高电平次数:cout= 26 
产生PWM波个数:pwm_in=31 
产生PWM波个数:pwm_in=31 
产生PWM波个数:pwm_in=31 
产生PWM波个数:pwm_in=31 
HIGH:134984 us
捕获高电平次数:cout= 27 
产生PWM波个数:pwm_in=32 
产生PWM波个数:pwm_in=32 
产生PWM波个数:pwm_in=32 
产生PWM波个数:pwm_in=32 
产生PWM波个数:pwm_in=32 
HIGH:134984 us
捕获高电平次数:cout= 28 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=33 
产生PWM波个数:pwm_in=34 
产生PWM波个数:pwm_in=34 
产生PWM波个数:pwm_in=34 
产生PWM波个数:pwm_in=34 
HIGH:134984 us
捕获高电平次数:cout= 29 
产生PWM波个数:pwm_in=35 
产生PWM波个数:pwm_in=35 
产生PWM波个数:pwm_in=35 
产生PWM波个数:pwm_in=35 
HIGH:134984 us
捕获高电平次数:cout= 30 
产生PWM波个数:pwm_in=36 
产生PWM波个数:pwm_in=36 
产生PWM波个数:pwm_in=36 
产生PWM波个数:pwm_in=36 
产生PWM波个数:pwm_in=36 
HIGH:134984 us
捕获高电平次数:cout= 31 
产生PWM波个数:pwm_in=37 
产生PWM波个数:pwm_in=37 
产生PWM波个数:pwm_in=37 
产生PWM波个数:pwm_in=37 
HIGH:134984 us
捕获高电平次数:cout= 32 
产生PWM波个数:pwm_in=38 
产生PWM波个数:pwm_in=38 
产生PWM波个数:pwm_in=38 
产生PWM波个数:pwm_in=38 
产生PWM波个数:pwm_in=38 
HIGH:134984 us
捕获高电平次数:cout= 33 
产生PWM波个数:pwm_in=39 
产生PWM波个数:pwm_in=39 
产生PWM波个数:pwm_in=39 
产生PWM波个数:pwm_in=39 
HIGH:134984 us
捕获高电平次数:cout= 34 
产生PWM波个数:pwm_in=40 
产生PWM波个数:pwm_in=40 
产生PWM波个数:pwm_in=40 
产生PWM波个数:pwm_in=40 
产生PWM波个数:pwm_in=40 
HIGH:134984 us
捕获高电平次数:cout= 35 
产生PWM波个数:pwm_in=41 
产生PWM波个数:pwm_in=41 
产生PWM波个数:pwm_in=41 
产生PWM波个数:pwm_in=41 
HIGH:134984 us
捕获高电平次数:cout= 36 
产生PWM波个数:pwm_in=42 
产生PWM波个数:pwm_in=42 
产生PWM波个数:pwm_in=42 
产生PWM波个数:pwm_in=42 
HIGH:134984 us
捕获高电平次数:cout= 37 
产生PWM波个数:pwm_in=43 
产生PWM波个数:pwm_in=43 
产生PWM波个数:pwm_in=43 
产生PWM波个数:pwm_in=43 
产生PWM波个数:pwm_in=43 
HIGH:134984 us
捕获高电平次数:cout= 38 
产生PWM波个数:pwm_in=44 
产生PWM波个数:pwm_in=44 
产生PWM波个数:pwm_in=44 
产生PWM波个数:pwm_in=44 
HIGH:134984 us
捕获高电平次数:cout= 39 
产生PWM波个数:pwm_in=45 
产生PWM波个数:pwm_in=45 
产生PWM波个数:pwm_in=45 
产生PWM波个数:pwm_in=45 
产生PWM波个数:pwm_in=45 
HIGH:134984 us
捕获高电平次数:cout= 40 
产生PWM波个数:pwm_in=46 
产生PWM波个数:pwm_in=46 
产生PWM波个数:pwm_in=46 
产生PWM波个数:pwm_in=46 
HIGH:134984 us
捕获高电平次数:cout= 41 
产生PWM波个数:pwm_in=47 
产生PWM波个数:pwm_in=47 
产生PWM波个数:pwm_in=47 
产生PWM波个数:pwm_in=47 
产生PWM波个数:pwm_in=47 
HIGH:134984 us
捕获高电平次数:cout= 42 
产生PWM波个数:pwm_in=48 
产生PWM波个数:pwm_in=48 
产生PWM波个数:pwm_in=48 
产生PWM波个数:pwm_in=48 
HIGH:134984 us
捕获高电平次数:cout= 43 
产生PWM波个数:pwm_in=49 
产生PWM波个数:pwm_in=49 
产生PWM波个数:pwm_in=49 
产生PWM波个数:pwm_in=49 
HIGH:134984 us
捕获高电平次数:cout= 44 
产生PWM波个数:pwm_in=50 
产生PWM波个数:pwm_in=50 
产生PWM波个数:pwm_in=50 
产生PWM波个数:pwm_in=50 
产生PWM波个数:pwm_in=50 
HIGH:134984 us
捕获高电平次数:cout= 45 
产生PWM波个数:pwm_in=51 
产生PWM波个数:pwm_in=51 
产生PWM波个数:pwm_in=51 
产生PWM波个数:pwm_in=51 
HIGH:134984 us
捕获高电平次数:cout= 46 
产生PWM波个数:pwm_in=52 
产生PWM波个数:pwm_in=52 
产生PWM波个数:pwm_in=52 
产生PWM波个数:pwm_in=52 
产生PWM波个数:pwm_in=52 
HIGH:134984 us
捕获高电平次数:cout= 47 
产生PWM波个数:pwm_in=53 
产生PWM波个数:pwm_in=53 
产生PWM波个数:pwm_in=53 
产生PWM波个数:pwm_in=53 
HIGH:134984 us
捕获高电平次数:cout= 48 
产生PWM波个数:pwm_in=54 
产生PWM波个数:pwm_in=54 
产生PWM波个数:pwm_in=54 
产生PWM波个数:pwm_in=54 
产生PWM波个数:pwm_in=54 
HIGH:134984 us
捕获高电平次数:cout= 49 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=55 
产生PWM波个数:pwm_in=56 
产生PWM波个数:pwm_in=56 
产生PWM波个数:pwm_in=56 
产生PWM波个数:pwm_in=56 
HIGH:134984 us
捕获高电平次数:cout= 50 
产生PWM波个数:pwm_in=57 
产生PWM波个数:pwm_in=57 
产生PWM波个数:pwm_in=57 
产生PWM波个数:pwm_in=57 
HIGH:134984 us
捕获高电平次数:cout= 51 
产生PWM波个数:pwm_in=58 
产生PWM波个数:pwm_in=58 
产生PWM波个数:pwm_in=58 
产生PWM波个数:pwm_in=58 
产生PWM波个数:pwm_in=58 
HIGH:134984 us
捕获高电平次数:cout= 52 
产生PWM波个数:pwm_in=59 
产生PWM波个数:pwm_in=59 
产生PWM波个数:pwm_in=59 
产生PWM波个数:pwm_in=59 
HIGH:134984 us
捕获高电平次数:cout= 53 
产生PWM波个数:pwm_in=60 
产生PWM波个数:pwm_in=60 
产生PWM波个数:pwm_in=60 
产生PWM波个数:pwm_in=60 
产生PWM波个数:pwm_in=60 
HIGH:134984 us
捕获高电平次数:cout= 54 
产生PWM波个数:pwm_in=61 
产生PWM波个数:pwm_in=61 
产生PWM波个数:pwm_in=61 
产生PWM波个数:pwm_in=61 
HIGH:134984 us
捕获高电平次数:cout= 55 
产生PWM波个数:pwm_in=62 
产生PWM波个数:pwm_in=62 
产生PWM波个数:pwm_in=62 
产生PWM波个数:pwm_in=62 
产生PWM波个数:pwm_in=62 
HIGH:134984 us
捕获高电平次数:cout= 56 
产生PWM波个数:pwm_in=63 
产生PWM波个数:pwm_in=63 
产生PWM波个数:pwm_in=63 
产生PWM波个数:pwm_in=63 
HIGH:134984 us
捕获高电平次数:cout= 57 
产生PWM波个数:pwm_in=64 
产生PWM波个数:pwm_in=64 
产生PWM波个数:pwm_in=64 
产生PWM波个数:pwm_in=64 
HIGH:134984 us
捕获高电平次数:cout= 58 
产生PWM波个数:pwm_in=65 
产生PWM波个数:pwm_in=65 
产生PWM波个数:pwm_in=65 
产生PWM波个数:pwm_in=65 
产生PWM波个数:pwm_in=65 
HIGH:134984 us
捕获高电平次数:cout= 59 
产生PWM波个数:pwm_in=66 
产生PWM波个数:pwm_in=66 
产生PWM波个数:pwm_in=66 
产生PWM波个数:pwm_in=66 
HIGH:134984 us
捕获高电平次数:cout= 60 
产生PWM波个数:pwm_in=67 
产生PWM波个数:pwm_in=67 
产生PWM波个数:pwm_in=67 
产生PWM波个数:pwm_in=67 
产生PWM波个数:pwm_in=67 
HIGH:134984 us
捕获高电平次数:cout= 61 
产生PWM波个数:pwm_in=68 
产生PWM波个数:pwm_in=68 
产生PWM波个数:pwm_in=68 
产生PWM波个数:pwm_in=68 
HIGH:134984 us
捕获高电平次数:cout= 62 
产生PWM波个数:pwm_in=69 
产生PWM波个数:pwm_in=69 
产生PWM波个数:pwm_in=69 
产生PWM波个数:pwm_in=69 
产生PWM波个数:pwm_in=69 
HIGH:134984 us
捕获高电平次数:cout= 63 
产生PWM波个数:pwm_in=70 
产生PWM波个数:pwm_in=70 
产生PWM波个数:pwm_in=70 
产生PWM波个数:pwm_in=70 
HIGH:134984 us
捕获高电平次数:cout= 64 
产生PWM波个数:pwm_in=71 
产生PWM波个数:pwm_in=71 
产生PWM波个数:pwm_in=71 
产生PWM波个数:pwm_in=71 
HIGH:134984 us
捕获高电平次数:cout= 65 
产生PWM波个数:pwm_in=72 
产生PWM波个数:pwm_in=72 
产生PWM波个数:pwm_in=72 
产生PWM波个数:pwm_in=72 
产生PWM波个数:pwm_in=72 
HIGH:134984 us
捕获高电平次数:cout= 66 
产生PWM波个数:pwm_in=73 
产生PWM波个数:pwm_in=73 
产生PWM波个数:pwm_in=73 
产生PWM波个数:pwm_in=73 
HIGH:134984 us
捕获高电平次数:cout= 67 
产生PWM波个数:pwm_in=74 
产生PWM波个数:pwm_in=74 
产生PWM波个数:pwm_in=74 
产生PWM波个数:pwm_in=74 
产生PWM波个数:pwm_in=74 
HIGH:134984 us
捕获高电平次数:cout= 68 
产生PWM波个数:pwm_in=75 
产生PWM波个数:pwm_in=75 
产生PWM波个数:pwm_in=75 
产生PWM波个数:pwm_in=75 
HIGH:134984 us
捕获高电平次数:cout= 69 
产生PWM波个数:pwm_in=76 
产生PWM波个数:pwm_in=76 
产生PWM波个数:pwm_in=76 
产生PWM波个数:pwm_in=76 
产生PWM波个数:pwm_in=76 
HIGH:134984 us
捕获高电平次数:cout= 70 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=77 
产生PWM波个数:pwm_in=78 
产生PWM波个数:pwm_in=78 
产生PWM波个数:pwm_in=78 
产生PWM波个数:pwm_in=78 
HIGH:134984 us
捕获高电平次数:cout= 71 
产生PWM波个数:pwm_in=79 
产生PWM波个数:pwm_in=79 
产生PWM波个数:pwm_in=79 
产生PWM波个数:pwm_in=79 
HIGH:134984 us
捕获高电平次数:cout= 72 
产生PWM波个数:pwm_in=80 
产生PWM波个数:pwm_in=80 
产生PWM波个数:pwm_in=80 
产生PWM波个数:pwm_in=80 
产生PWM波个数:pwm_in=80 
HIGH:134984 us
捕获高电平次数:cout= 73 
产生PWM波个数:pwm_in=81 
产生PWM波个数:pwm_in=81 
产生PWM波个数:pwm_in=81 
产生PWM波个数:pwm_in=81 
HIGH:134984 us
捕获高电平次数:cout= 74 
产生PWM波个数:pwm_in=82 
产生PWM波个数:pwm_in=82 
产生PWM波个数:pwm_in=82 
产生PWM波个数:pwm_in=82 
产生PWM波个数:pwm_in=82 
HIGH:134984 us
捕获高电平次数:cout= 75 
产生PWM波个数:pwm_in=83 
产生PWM波个数:pwm_in=83 
产生PWM波个数:pwm_in=83 
产生PWM波个数:pwm_in=83 
HIGH:134984 us
捕获高电平次数:cout= 76 
产生PWM波个数:pwm_in=84 
产生PWM波个数:pwm_in=84 
产生PWM波个数:pwm_in=84 
产生PWM波个数:pwm_in=84 
产生PWM波个数:pwm_in=84 
HIGH:134984 us
捕获高电平次数:cout= 77 
产生PWM波个数:pwm_in=85 
产生PWM波个数:pwm_in=85 
产生PWM波个数:pwm_in=85 
产生PWM波个数:pwm_in=85 
HIGH:134984 us
捕获高电平次数:cout= 78 
产生PWM波个数:pwm_in=86 
产生PWM波个数:pwm_in=86 
产生PWM波个数:pwm_in=86 
产生PWM波个数:pwm_in=86 
HIGH:134984 us
捕获高电平次数:cout= 79 
产生PWM波个数:pwm_in=87 
产生PWM波个数:pwm_in=87 
产生PWM波个数:pwm_in=87 
产生PWM波个数:pwm_in=87 
产生PWM波个数:pwm_in=87 
HIGH:134984 us
捕获高电平次数:cout= 80 
产生PWM波个数:pwm_in=88 
产生PWM波个数:pwm_in=88 
产生PWM波个数:pwm_in=88 
产生PWM波个数:pwm_in=88 
HIGH:134984 us
捕获高电平次数:cout= 81 
产生PWM波个数:pwm_in=89 
产生PWM波个数:pwm_in=89 
产生PWM波个数:pwm_in=89 
产生PWM波个数:pwm_in=89 
产生PWM波个数:pwm_in=89 
HIGH:134984 us
捕获高电平次数:cout= 82 
产生PWM波个数:pwm_in=90 
产生PWM波个数:pwm_in=90 
产生PWM波个数:pwm_in=90 
产生PWM波个数:pwm_in=90 
HIGH:134984 us
捕获高电平次数:cout= 83 
产生PWM波个数:pwm_in=91 
产生PWM波个数:pwm_in=91 
产生PWM波个数:pwm_in=91 
产生PWM波个数:pwm_in=91 
产生PWM波个数:pwm_in=91 
HIGH:134984 us
捕获高电平次数:cout= 84 
产生PWM波个数:pwm_in=92 
产生PWM波个数:pwm_in=92 
产生PWM波个数:pwm_in=92 
产生PWM波个数:pwm_in=92 
HIGH:134984 us
捕获高电平次数:cout= 85 
产生PWM波个数:pwm_in=93 
产生PWM波个数:pwm_in=93 
产生PWM波个数:pwm_in=93 
产生PWM波个数:pwm_in=93 
HIGH:134984 us
捕获高电平次数:cout= 86 
产生PWM波个数:pwm_in=94 
产生PWM波个数:pwm_in=94 
产生PWM波个数:pwm_in=94 
产生PWM波个数:pwm_in=94 
产生PWM波个数:pwm_in=94 
HIGH:134984 us
捕获高电平次数:cout= 87 
产生PWM波个数:pwm_in=95 
产生PWM波个数:pwm_in=95 
产生PWM波个数:pwm_in=95 
产生PWM波个数:pwm_in=95 
HIGH:134984 us
捕获高电平次数:cout= 88 
产生PWM波个数:pwm_in=96 
产生PWM波个数:pwm_in=96 
产生PWM波个数:pwm_in=96 
产生PWM波个数:pwm_in=96 
产生PWM波个数:pwm_in=96 
HIGH:134984 us
捕获高电平次数:cout= 89 
产生PWM波个数:pwm_in=97 
产生PWM波个数:pwm_in=97 
产生PWM波个数:pwm_in=97 
产生PWM波个数:pwm_in=97 
HIGH:134984 us
捕获高电平次数:cout= 90 
产生PWM波个数:pwm_in=98 
产生PWM波个数:pwm_in=98 
产生PWM波个数:pwm_in=98 
产生PWM波个数:pwm_in=98 
产生PWM波个数:pwm_in=98 
HIGH:134984 us
捕获高电平次数:cout= 91 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=99 
产生PWM波个数:pwm_in=100 
产生PWM波个数:pwm_in=100 
产生PWM波个数:pwm_in=100 
产生PWM波个数:pwm_in=100 
HIGH:134984 us
捕获高电平次数:cout= 92 
产生PWM波个数:pwm_in=101 
产生PWM波个数:pwm_in=101 
产生PWM波个数:pwm_in=101 
产生PWM波个数:pwm_in=101 
HIGH:134984 us
捕获高电平次数:cout= 93 
产生PWM波个数:pwm_in=102 
产生PWM波个数:pwm_in=102 
产生PWM波个数:pwm_in=102 
产生PWM波个数:pwm_in=102 
HIGH:134984 us
捕获高电平次数:cout= 94 
产生PWM波个数:pwm_in=103 
产生PWM波个数:pwm_in=103 
产生PWM波个数:pwm_in=103 
产生PWM波个数:pwm_in=103 
产生PWM波个数:pwm_in=103
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-30 00:06:56 | 显示全部楼层
回复【21楼】青山小树:
---------------------------------
串口输出需要时间,这个过程你停止pwm输出了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-30 08:44:22 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
谢谢原子哥这么晚帮我回复,非常惭愧和感激。。。
串口输出过程我没有停止PWM输出。
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-30 10:37:18 | 显示全部楼层
回复【22楼】正点原子:
---------------------------------
我删掉了串口打印中的汉字,输出数据还是跟之前类似。
于是将捕获时钟放慢到0.1MHz(之前是1MHz捕获),结果好了一点,PWM捕丢2个,实验几次还是这样。更换了捕获和输出的中断优先级结果没改变。为什么还是差两个,而且减慢频率结果就比之前好一点?
贴图如下:
******2014/12/30 10:16:17******
 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=2 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
pwm_in=3 
HIGH:13517 us
cout= 1 
pwm_in=3 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
pwm_in=4 
HIGH:13517 us
cout= 2 
pwm_in=4 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
pwm_in=5 
HIGH:13517 us
cout= 3 
pwm_in=5 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
pwm_in=6 
HIGH:13517 us
cout= 4 
pwm_in=6 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
pwm_in=7 
HIGH:13517 us
cout= 5 
pwm_in=7 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
pwm_in=8 
HIGH:13517 us
cout= 6 
pwm_in=8 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
pwm_in=9 
HIGH:13517 us
cout= 7 
pwm_in=9 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
pwm_in=10 
HIGH:13517 us
cout= 8 
pwm_in=10 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
pwm_in=11 
HIGH:13517 us
cout= 9 
pwm_in=11 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
pwm_in=12 
HIGH:13517 us
cout= 10 
pwm_in=12 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
pwm_in=13 
HIGH:13517 us
cout= 11 
pwm_in=13 
pwm_in=14 
pwm_in=14 
pwm_in=14
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-30 22:46:47 | 显示全部楼层
回复【24楼】青山小树:
---------------------------------
你直接试试输出固定脉冲。
比如我按一下按键,输出10个脉冲。
输出后停止。

你现在用的PWM溢出中断统计的,应该是很准才对。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2014-12-31 11:55:02 | 显示全部楼层
回复【25楼】正点原子:
---------------------------------
原子哥,我的笔记本就一个USB 口,就用USB-HUB,相当于有了4个usb,其中三个接鼠标、USB转串口、JTAG 。JTAG仿真时发现程序跑的时候,鼠标的小动作会让程序突然就跑停了,跳出来了,好多次都这样,这是怎么回事呢。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-31 23:28:37 | 显示全部楼层
回复【26楼】青山小树:
---------------------------------
 供电不足吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-1-8 13:32:34 | 显示全部楼层
回复【27楼】正点原子:
---------------------------------
果然是原子哥。我按照您的提示,淘宝上买 一个带电源的USB-HUB,程序就稳稳运行 。
但是,我又想让tim3捕获通道1和2同时捕获正交编码器的两路信号,用一个TIM3_IRQHandler(void) ,里边写了对两路信号的中断处理,代码一会贴出。
结果就是:程序一运行就退出。好像没有开始运行一下,mdk中的"run"点了颜色变浅马上变深,说明没运行。这是怎么回事呢,程序怎么不能运行了呢?
PS:仅TIM3捕获通道1运行时,是正常的。
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-1-8 13:35:29 | 显示全部楼层
原子哥,这是我的代码

输入捕获2015.1.7.rar

1.77 MB, 下载次数: 138

回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-1-8 17:15:43 | 显示全部楼层
回复【27楼】正点原子:
---------------------------------
原子哥,我的步进电机驱动器要5V供电;我的stm32引脚输出电压是3.3V.现在步进电机跑起来是咣咣咣咣的,可以带动减速器,声音不是静悄悄的那种。这可能是什么原因呢?
同事跟我说步进电机跑起来是静悄悄的,是这样的吗?
PS:我现在没有对步进电机做任何控制算法,只是上电给方向和驱动(方向是+3.3V,驱动是180ms频率PWM波120ms高电平)
我的驱动器是400细分
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-9 00:32:36 | 显示全部楼层
回复【30楼】青山小树:
---------------------------------
静悄悄是不可能了,声音肯定是有的,而且声音大小和你驱动器有关。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-1-9 10:33:45 | 显示全部楼层
回复【31楼】正点原子:
---------------------------------
调频加多细分,声音就好多了。
但是,转一圈就不是1024,我试验转2圈,58500多,59500多,反正没有相同结果的两次。这是怎么回事呢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 06:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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