OpenEdv-开源电子网

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

stm32f4的PWM输入模式什么时候进中断?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2016-6-4
在线时间
5 小时
发表于 2016-6-4 08:43:27 | 显示全部楼层 |阅读模式
1金钱
stm32f407的PWM输入什么时候进中断?是IC1捕获周期测量那个地方吗?
QQ图片20160604084032.png

最佳答案

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

http://www.openedv.com/thread-73590-1-1.html
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-4 08:43:28 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-4 09:16:56 | 显示全部楼层
计数溢出,当然打开了触发中断也会进入中断
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2016-6-4
在线时间
5 小时
 楼主| 发表于 2016-6-4 10:11:37 | 显示全部楼层
八度空间 发表于 2016-6-4 09:16
计数溢出,当然打开了触发中断也会进入中断

  /*TIM5通道2用于输入捕获*/
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);  
  TIM_TimeBaseStructure.TIM_Period = 0xffffffff;
  TIM_TimeBaseStructure.TIM_Prescaler = 3;     //捕获频率21M ,T=47.61904762ns      
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
     
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
  TIM_ICInitStructure.TIM_ICFilter = 0x00;
  TIM_PWMIConfig(TIM5, &TIM_ICInitStructure);   //PWM输入模式
  
  TIM_SelectInputTrigger(TIM5, TIM_TS_TI2FP2);
  TIM_SelectSlaveMode(TIM5, TIM_SlaveMode_Reset);       //主从复位模式
  TIM_SelectMasterSlaveMode(TIM5,TIM_MasterSlaveMode_Enable);

  NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;    //周期测量中断优先级高于闸门中断
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  TIM_ITConfig(TIM5, TIM_IT_CC2, ENABLE);       //开周期测量中断

我打算测外部脉冲信号的周期和占空比。上面是我寄存器的配置。这样配置的话,是不是应该是IC2捕获到第二个上升沿的时候进入中断?

下面是我中断程序,变量都是double型,脉冲信号到1M以上就测不了了
void TIM5_IRQHandler(void)      
{
        if (TIM_GetITStatus(TIM5, TIM_IT_CC2) != RESET)
        {       
            TIM_ClearITPendingBit(TIM5, TIM_IT_CC2);
            PulseLength = ( TIM_GetCapture1(TIM5) + 1 ) * 47.6190476;     //高电平时间,单位ns               
            Period2 = ( TIM_GetCapture2(TIM5) + 1)  * 47.6190476;         //周期,单位ns
            DutyCycle = PulseLength/Period2 * 100;     //占空比         
        }
}
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-4 11:58:22 | 显示全部楼层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2016-6-4
在线时间
5 小时
 楼主| 发表于 2016-6-4 12:34:11 | 显示全部楼层
八度空间 发表于 2016-6-4 11:58
http://www.openedv.com/thread-74152-1-1.html
可以参考这里

这个不是输出PWM的程序么,我的是PWM输入
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 11:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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