OpenEdv-开源电子网

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

STM32F103C8捕获频率,定时器通道问题

[复制链接]

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
发表于 2018-5-5 19:03:50 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 邦尼power 于 2018-5-5 19:04 编辑

360截图20180505185349931.jpg
我使用的是STM32F103c8芯片,我想做的是用TIM2定时器做一个捕获频率的程序,使用的GPIO口是PB11,如果只是用PB11引脚的话,各位大神可以看一下我程序配置哪里出问题了吗,我测试的时候发现不能检测到频率,或者说PB11配置有问题,根据图片显示重新定义才会映射到PB11,请问又如何重新定义,谢谢!


TIM_ICInitTypeDef  TIM2_ICInitStructure;//

void TIM2_Cap_Init(u16 arr,u16 psc)
{
  GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  NVIC_InitTypeDef NVIC_InitStructure;        
        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);         //ê1ÄüTIM2ê±Öó
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //ê1ÄüGPIOBê±Öó
        

        
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_11;    //PB11 Çå3y֮ǰéèÖà 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD ; //PB11 êäèë  
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_11);                                                 //PB11 ÏÂà-
        
        
                //3õê¼»ˉ¶¨ê±Æ÷2 TIM2
        TIM_TimeBaseStructure.TIM_Period = arr; //é趨¼ÆêyÆ÷×Ô¶ˉ֨װÖμ
        TIM_TimeBaseStructure.TIM_Prescaler =psc;         //Ô¤·ÖÆμÆ÷   
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //éèÖÃê±Öó·Ö¸î:TDTS = Tck_tim
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIMÏòéϼÆêyÄ£ê½
        TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //¸ù¾YTIM_TimeBaseInitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉTIMxμÄê±¼ä»ùêyμ¥λ

        //3õê¼»ˉTIM2êäèë2¶»ñ2Îêy
        TIM2_ICInitStructure.TIM_Channel = TIM_Channel_4; //CC1S=01         Ñ¡Ôñêäèë¶Ë IC4ó3éäμ½TI4éÏ   //TIM2_CH4 pB11
  TIM2_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;        //éÏéyÑØ2¶»ñ
  TIM2_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //ó3éäμ½TI4éÏ
  TIM2_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;           //ÅäÖÃêäèë·ÖÆμ,2»·ÖÆμ
  TIM2_ICInitStructure.TIM_ICFilter = 0x00;   //IC1F=0000 ÅäÖÃêäèëÂË2¨Æ÷ 2»ÂË2¨
  TIM_ICInit(TIM2, &TIM2_ICInitStructure);
        
        //ÖD¶Ï·Ö×é3õê¼»ˉ
        NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;  //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;   //′óóÅÏè¼¶0¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQí¨μà±»ê1Äü
        NVIC_Init(&NVIC_InitStructure);  //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷
        
        TIM_ITConfig(TIM2,TIM_IT_Update|TIM_IT_CC4,ENABLE);//ÔêDí¸üDÂÖD¶Ï ,ÔêDíCC1IE2¶»ñÖD¶Ï        
  TIM_Cmd(TIM2,ENABLE );         //ê1Äü¶¨ê±Æ÷4
        
}








最佳答案

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

那个是互补输出 一般控制电机的正反转 捕获用CH1 吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-5 19:03:51 | 显示全部楼层
邦尼power 发表于 2018-5-7 20:40
高级定时器1,通道1和通道1N,配置没有什么区别吧,我用的是CH1N

那个是互补输出   一般控制电机的正反转   捕获用CH1 吧
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-5-5 19:23:49 | 显示全部楼层
官网标准库都有范例,直接参考就可以
一分耕耘一分收获。
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-5 19:29:30 | 显示全部楼层
yklstudent 发表于 2018-5-5 19:23
官网标准库都有范例,直接参考就可以

范例我知道哦,您看一下我使用的PB11配置对吗,谢谢!
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-5 19:53:55 | 显示全部楼层
你用的这个功能属于重新定义的  应该用左边的默认复用功能  改位PA3就是TIM2的CH4通道
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-7 11:08:38 | 显示全部楼层
我是风你是花 发表于 2018-5-5 19:53
你用的这个功能属于重新定义的  应该用左边的默认复用功能  改位PA3就是TIM2的CH4通道

我用定时器1了,正在改,谢谢
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-7 19:40:35 | 显示全部楼层
邦尼power 发表于 2018-5-7 11:08
我用定时器1了,正在改,谢谢

嗯嗯  用哪个都行  区分好左右两列功能就好
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-7 20:16:21 | 显示全部楼层
我是风你是花 发表于 2018-5-7 19:40
嗯嗯  用哪个都行  区分好左右两列功能就好

对了,高级定时器1你用过吗,用来做capture
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-7 20:36:26 | 显示全部楼层
邦尼power 发表于 2018-5-7 20:16
对了,高级定时器1你用过吗,用来做capture

用过  但是捕获没做过  正在做捕获脉宽的实验   
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-7 20:40:01 | 显示全部楼层
我是风你是花 发表于 2018-5-7 20:36
用过  但是捕获没做过  正在做捕获脉宽的实验

高级定时器1,通道1和通道1N,配置没有什么区别吧,我用的是CH1N
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-7 21:04:05 | 显示全部楼层
我是风你是花 发表于 2018-5-7 20:53
那个是互补输出   一般控制电机的正反转   捕获用CH1 吧

哦哦,谢谢您,大神,您懂这么多可以加个好友吗
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-8 16:40:06 | 显示全部楼层
补充说明,正常通道就用CH1~Ch4就好了,CH1N~CH3N是电机控制互补输出用的。

心得:频率测不到不一定是配置问题哦,也可能是输入频率的问题,所以出现问题的时候还是要从头到尾捋一边哦,同时再次谢谢给我指导的大神们!
回复

使用道具 举报

12

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
326
金钱
326
注册时间
2018-5-8
在线时间
37 小时
发表于 2018-5-8 17:39:01 | 显示全部楼层
正常通道就用CH1~Ch4就好了,CH1N~CH3N是电机控制互补输出用的?

回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-9 14:40:13 | 显示全部楼层
18877617825 发表于 2018-5-8 17:39
正常通道就用CH1~Ch4就好了,CH1N~CH3N是电机控制互补输出用的?

CH1~CH4是定时器的四个通道即TIMxCH1~TIMxCH4,如果你用定时器进行捕获频率的话就用这四个其中之一就好了;CH1N~CH3N也是定时器的三个通道即TIMxCH1N~TIMxCHN,这三个通道目前我所知道的是用来控制电机互不输出用的。说的不是很全面哦,有不懂得就发帖让各路大神给你解释,获者自己查找资料哦
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4910
金钱
4910
注册时间
2017-7-6
在线时间
720 小时
发表于 2018-5-9 14:44:29 | 显示全部楼层
我是风你是花 发表于 2018-5-5 19:53
你用的这个功能属于重新定义的  应该用左边的默认复用功能  改位PA3就是TIM2的CH4通道

PB11也可以啊,设置成映射不就可以吗?
我是小白,很白很白的小白!!!
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-9 15:22:38 | 显示全部楼层
程功之道 发表于 2018-5-9 14:44
PB11也可以啊,设置成映射不就可以吗?

哈哈,你两说的都对
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-9 15:29:34 | 显示全部楼层
邦尼power 发表于 2018-5-9 14:40
CH1~CH4是定时器的四个通道即TIMxCH1~TIMxCH4,如果你用定时器进行捕获频率的话就用这四个其中之一就好了 ...

对了,CH1N~CH3N通道好像只有高级定时器TIM1和TIM8才有
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4910
金钱
4910
注册时间
2017-7-6
在线时间
720 小时
发表于 2018-5-9 16:18:27 | 显示全部楼层
邦尼power 发表于 2018-5-9 15:22
哈哈,你两说的都对

硬件能改就可以  硬件不方便就只好映射了
我是小白,很白很白的小白!!!
回复

使用道具 举报

32

主题

146

帖子

0

精华

高级会员

Rank: 4

积分
642
金钱
642
注册时间
2017-7-25
在线时间
129 小时
 楼主| 发表于 2018-5-9 16:50:16 | 显示全部楼层
程功之道 发表于 2018-5-9 16:18
硬件能改就可以  硬件不方便就只好映射了

恩呢
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-9 19:39:18 | 显示全部楼层
邦尼power 发表于 2018-5-7 21:04
哦哦,谢谢您,大神,您懂这么多可以加个好友吗

共同学习
回复

使用道具 举报

7

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2017-12-29
在线时间
37 小时
发表于 2018-5-9 19:39:40 | 显示全部楼层
程功之道 发表于 2018-5-9 14:44
PB11也可以啊,设置成映射不就可以吗?

嗯嗯 可以啊   
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4910
金钱
4910
注册时间
2017-7-6
在线时间
720 小时
发表于 2018-5-10 09:06:41 | 显示全部楼层
我是小白,很白很白的小白!!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 09:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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