完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
一个端口通过外部使其置高或置低效果类似方波脉冲(但不是持续的,有可能长时间都置低),怎么计数其脉冲个数以及判断其上升沿,比如说在tiM1定时器溢出中断里:
#pragma vector=TIM1_OVR_UIF_vector __interrupt void TIM1_OVR_UIF_IRQHandler(void) { TIM1_SR1=0X00; count13++; if(count13==3) //数3个脉冲后PD2置高 PD2=1; if(count13==6) //数3个脉冲后PD2置低 PD2=0; } 如何计数PD2端口的脉冲个数以及判断其上升沿. |
|
相关推荐
19个回答
|
|
|
你对PD2的高或低直接计数即可,至于上升沿看PD2由0->1的变化即可。
|
|
|
|
|
|
直接计数怎么做,需要开外部中断吗,我只知道通过中断可以计数脉冲个数 |
|
|
|
|
|
你是要输出脉冲?还是测量脉冲个数?
|
|
|
|
|
|
|
|
|
|
|
|
外部中断上升沿触发来进行上升沿的计数。
|
|
|
|
|
|
谢谢啦,还有如果这个脉冲不是持续的,可能PD2端口会突然长时间置低,会影响计数吗 |
|
|
|
|
|
楼上说的都挺对的,如果只检测上升沿的话就可以设置成外部中断为上升沿触发即可,在中断服务例程中计数即可。
|
|
|
|
|
|
明白了,但是如果该脉冲不是持续恒定的,有可能PD2端口会突然长时间置低,影响计数吗 |
|
|
|
|
|
如果长时间不变,是不会影响的计数的,只有上升沿发生时才会进入中断。楼主可以测试一下。
|
|
|
|
|
|
当然不影响了,你外部中断设置的是边沿触发而不是电平触发,所以不论你电平持续时间有多长都不影响 |
|
|
|
|
|
恩,还有个问题,PD2端口脉冲是在TIM1溢出中断里产生的,如果我再开外部中断,还需要设置中断优先级吗 |
|
|
|
|
|
自然要开中断,然后在中断中判别计数及相应的判别处理如判别上升沿等。 直接计数好像不如单片机那样方便。 |
|
|
|
|
|
那不就是来一个脉冲进一次中断吗,我看网上说这样浪费资源,不是很懂 |
|
|
|
|
|
外部中断上升沿触发来进行上升沿的计数
|
|
|
|
|
|
可以开启定时器模式计数,不用软件干预
|
|
|
|
|
|
|
|
|
|
|
|
学习了。。
|
|
|
|
|
|
|
|
|
|
|
|
上升沿中断,变量+1就好了,别把太多人类的情绪赋予单片机,你告诉他什么,他才会做,而且除了死机,都保持原先的状态等待你
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
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 07:08 , Processed in 1.071540 second(s), Total 78, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4284