OpenEdv-开源电子网

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

SMT32F103RET6 TIM8 输入捕获PWM 无法进入中断函数 四轴飞控。已附图、源程序。求解

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
发表于 2014-11-19 19:08:02 | 显示全部楼层 |阅读模式
5金钱
试了很多方法,都不行。CNT在计数的,在ccr1对应口接50hz的PWM信号,CCR1有数据产生,SR寄存器中CC1IF被置1,但是没有进入中断函数。
一开始以为中断函数名称不对,这四个都试了,还是不行:
//  TIM8_BRK_IRQn               = 43,     /*!< TIM8 Break Interrupt                                 */
//  TIM8_UP_IRQn                = 44,     /*!< TIM8 Update Interrupt                                */
//  TIM8_TRG_COM_IRQn           = 45,     /*!< TIM8 Trigger and Commutation Interrupt               */
//  TIM8_CC_IRQn                = 46,     /*!< TIM8 Capture Compare Interrupt  

TIM8初始化程序如下:













调试时TIM8的状态如下:(1口外接接入50hzPWM信号源)










最后附上源程序:

四轴源代码 PPM.rar

7.88 MB, 下载次数: 889

最佳答案

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

给你参考一下 void TIM1_Cap_Init(void) {   GPIO_InitTypeDef GPIO_InitStructure;   TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStructure;   NVIC_InitTypeDef NVIC_InitStructure;   TIM_ICInitTypeDef TIM_ICInitStructure;   /*RCC Configuration*/   RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);   R ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2015-2-10
在线时间
0 小时
发表于 2014-11-19 19:08:03 | 显示全部楼层
给你参考一下

void TIM1_Cap_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;
  TIM_ICInitTypeDef TIM_ICInitStructure;
  /*RCC Configuration*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);  //开启了复用时钟
  /*GPIO Configuration*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入
  GPIO_Init(GPIOA,&GPIO_InitStructure);
  GPIO_ResetBits(GPIOA,GPIO_Pin_8|GPIO_Pin_11);
  /*Timebase Configuration*/
  TIM_InternalClockConfig(TIM1);                                  //时钟源选择内部时钟用于计时
  TIM_TimeBaseInitStructure.TIM_Prescaler = TIM1_PSC;             //预分频计数器
  TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //上升沿计数
  TIM_TimeBaseInitStructure.TIM_Period = TIM1_ARR;                //计数周期
  TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //时钟分频,不分频
  TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);
  /*PWM_Input Configuration*/
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;                //输入通道1
  TIM_ICInitStructure.TIM_ICPolarity= TIM_ICPolarity_Rising;      //上升沿捕获
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //输入映射选择为对应的Tl1
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;           //预分频1
  TIM_ICInitStructure.TIM_ICFilter = 0x00;                        //滤波器:不滤波
  TIM_ICInit(TIM1,&TIM_ICInitStructure);
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;                //输入通道4
  TIM_ICInit(TIM1,&TIM_ICInitStructure);
  /*NVIC Configuration*/
  NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
  NVIC_Init(&NVIC_InitStructure);
  /*Interrupt Configuration*/
  TIM_ClearITPendingBit(TIM1,TIM_IT_Update|TIM_IT_CC1|TIM_IT_CC4);
  TIM_ITConfig(TIM1,TIM_IT_Update|TIM_IT_CC1|TIM_IT_CC4,ENABLE);
  TIM_Cmd(TIM1,ENABLE);
}

void TIM1_CC_IRQHandler(void)
{  
//
  TIM_ClearITPendingBit(TIM1,TIM_IT_CC1|TIM_IT_CC4);
}

void TIM1_UP_IRQHandler(void)
{
//
  TIM_ClearITPendingBit(TIM1,TIM_IT_Update); 
}
要有最朴素的生活和最遥远的梦想,即使明日地冻天寒路远马死…
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
 楼主| 发表于 2014-11-19 21:36:32 | 显示全部楼层
原子哥  快出现啊啊啊啊
回复

使用道具 举报

3

主题

2164

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5744
金钱
5744
注册时间
2013-11-22
在线时间
1206 小时
发表于 2014-11-19 23:20:32 | 显示全部楼层
用捕获比较中断   检查下中断函数有没有问题
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
 楼主| 发表于 2014-11-20 16:58:43 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
中断都进不了。跟中断函数里面做什么没关系的吧
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-11-20 23:20:29 | 显示全部楼层
没搞过PWM输入模式,帮顶。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-10-26
在线时间
0 小时
 楼主| 发表于 2014-11-21 17:40:50 | 显示全部楼层
高手都在哪儿?搞过STM32  TIM1/8 输入捕获的高手都在哪儿?
回复

使用道具 举报

13

主题

225

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2013-11-12
在线时间
29 小时
发表于 2014-11-21 21:41:31 | 显示全部楼层
其实对你的姿态解算比较感兴趣,你用的什么方法啊?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-12-3
在线时间
0 小时
发表于 2014-12-11 20:54:13 | 显示全部楼层
新人学习,太感谢楼主分享!
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-2-9
在线时间
3 小时
发表于 2015-2-9 15:43:02 | 显示全部楼层
回复【2楼】Luluyao:
---------------------------------
你好 问题解决了么?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-4-7
在线时间
0 小时
发表于 2015-4-7 15:47:28 | 显示全部楼层
回复【10楼】左衛:
-----------------------------
这里为啥要有两个中断? 一个TIM1_UP_IRQn读取ch1和ch4的不就可以了吗?
回复

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-5-12
在线时间
23 小时
发表于 2015-8-20 10:29:15 | 显示全部楼层
谢谢楼主的分享!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-1-31 20:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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