在《华大HC32F4A0之32位计数器的问题》当中我们提到过32位计数器和16位计数器在用于捕获方面的不同之处,要知道在460的芯片当中32位计数器是采用双16位计数器级联形成的。 然而如果我们需要使用32位计数器进行捕获的话,采用这样的级联方式是没有办法实现的,为什么呢? 首先我们要了解定时器捕获的原理,所谓定时器捕获其实对于定时器来说是分为两个步骤进行的,首先定时器按照设定好的时钟进行计数,此时定时器有数个输入端(一般一个定时器有两个)作为输入信号捕获检测。 一旦满足我们设定的上升沿或者下降沿捕获条件之后此时定时器会有两个专门的寄存器记录当前定时器的计数值,从而能够获取到捕获信号的上升沿和下降沿的时间,进行比较可以计算周期、相位等等。 然而如果采用的是16位计数器级联形成的32位计数器那么我们只能把待捕获的信号接入到其中一个定时器当中,这样的话前低16位计数器能够正常捕获,但是高16位计数器并不知道什么时候来了捕获信号,此时它只能等到第16位计数器溢出之后才能够产生一个溢出时钟,才能够产生一个时钟信号进行计数。 如果我们的上升沿和下降沿时间差别较大的话而且这个时间如果是随机不确定的话,很有可能存在上升沿跟下降沿时间在第16位计数器当中,看起来好像没有差一个16位的数,但是在高16位计数器当中,很有可能会差数个16位的数的倍数却不知道的这么一种情况。 为什么会要采用32位计数器也是因为我们需要捕获的信号以16位定时器不能满足要求,这时候就需要使用4A0或者448,而460就不满足要求了。 有人说那么如果采用级联的32位计数器将捕获信号并联复接到两个计数器当中,是否就可以满足以上要求呢? 答案也是否定的,因为对计数器来说高16位计数器平时是没有时钟的,根本不会工作计时。 最后,我们会不定期更新关于华大单片机开发方面的实用干货,欢迎点赞关注! 平台微信公众号:Zye-BBS 一个服务我们河南电子人的电子技术平台 中原电子社区——为中原电子行业的繁荣而努力 有技术问题请扫一扫下方二维码
Copyright © 2022 郑州品和电子科技有限公司 版权所有本公司深耕8位、32位Cortex-M0+&Cortex-M4单片机应用开发和软件设计服务! 备案号:豫ICP备16015205-1号
技术支持:13516243932