OpenEdv-开源电子网

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

请问STM32F030怎么用定时器的其中一路去测量输入PWM的频率

[复制链接]

28

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2016-9-29
在线时间
113 小时
发表于 2017-12-12 17:35:13 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2016-9-29
在线时间
113 小时
 楼主| 发表于 2017-12-12 17:35:14 | 显示全部楼层
回复

使用道具 举报

28

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2016-9-29
在线时间
113 小时
 楼主| 发表于 2017-12-12 17:35:57 | 显示全部楼层
我要测量1Hz到1K的
回复

使用道具 举报

28

主题

150

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
金钱
488
注册时间
2016-9-29
在线时间
113 小时
 楼主| 发表于 2017-12-12 17:44:23 | 显示全部楼层
我使用定时器3进行PWM捕获的,并且把TIM3的时钟分频设置成跟产生PWM的定时器一样的分频数。以下是我的TIM3中断程序:


void TIM3_IRQHandler(void)
{       
               
        if(TIM_GetITStatus(TIM3, TIM_IT_CC1) == SET)
    {
                TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
           if(ppp == 0)        //变量ppp作为判断是否是第二次捕获上升沿的标志
                {               
                        IC3ReadValue1 = TIM_GetCapture1(TIM3);//记录第一次捕获上升沿的值
                        ppp = 1;
                }
                else if(ppp == 1)
                {
                        ppp = 0;
                        IC3ReadValue2 = TIM_GetCapture1(TIM3);//记录第二次捕获上升沿的值
                        if (IC3ReadValue2 > IC3ReadValue1)
                        {
                                Capture = (IC3ReadValue2 - IC3ReadValue1);
                                //计算频率
                               TIM3Freq = (uint32_t) SystemCoreClock / Capture;
         
                        }
                   else if(IC3ReadValue2 < IC3ReadValue1)
                   {
                                Capture = (0xffff - IC3ReadValue1) + IC3ReadValue2;
                           //计算频率
                           TIM3Freq = (uint32_t) SystemCoreClock / Capture;
                   }
                   else Capture=0;
                 }
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2018-1-8 09:35:18 | 显示全部楼层
ZDawn 发表于 2017-12-12 17:44
我使用定时器3进行PWM捕获的,并且把TIM3的时钟分频设置成跟产生PWM的定时器一样的分频数。以下是我的TIM3 ...

如果是任意频率呢  还需要加入溢出的可能
自己选择的路,成家前走完。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 16:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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