完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
目的:用STM32测量频率,测量频率范围越大越好 做法:我是利用定时中断+外部中断来实现的。具体做法:外部中断每来一个脉冲上升沿促发中断一次,频率值加1,记到0.5s后定时器中断发生,显示此时频率的值。但是频率上不去,只能到700K左右。有没有更好的方法测频率呢?
/*外部中断处理函数*/ void EXti0_IRQHandler(void) { g_freq++; //计数值,最后当频率值显示出来 EXTI->PR=1<<0; //清除LINE0上的中断标志位 } /*定时器中断服务函数*/ void TIM3_IRQHandler(void) //TIM3中断 { flag = 1; //之里的flag用于main函数里面判断是否0.5S到了,如果到了则显示出频率值 TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx的中断待处理位:TIM 中断源 } main函数关键部分: while(1) { if(flag) { Freq_tmp = g_freq; printf("%dn", Freq_tmp);//之里用串口打印出频率值在终端上 g_freq = 0; //频率值清零,重新计数 flag = 0; //清除标记,下次0.5S定时器中断到来后重新显示出来 } } |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 12:14 , Processed in 0.648032 second(s), Total 53, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3914