大家好,我是微控小智,今天又跟大家见面了。学习需要坚持,做技术亦是如此,厚积才能博发。小智写的程序都是进行反复测试过的,可以放心跟着操作,有疑问的地方可以留言。
已经知道高速计数器工作在中断方式下,不经过扫描周期,对频率较高的输入信号需采用高速计数器来计数,在上一期中我们也熟悉了高速计数器的编程步骤,在高速计数器编程还经常使用中断,在中断事件列表当中,有很大一部分是用于高速计数器的中断事件,今天来总结高速计数器中断事件的编程。
如果要加入高速计数器中断事件,高速计数器的编程步骤需要增加两个:
高速计数器编程需完成以下基本操作:
设置高速计数器控制字节
设置高速计数器初始值
设置高速计数器预设值
连接高速计数器和工作模式
连接中断程序和中断事件
开放中断
激活高速计数器
中断事件优先级列表如下图所示:
高速计数器中断事件:
在普通计数器中有当前值等于预设值时计数器的状态位接通,而在高速计数器中当前值等于预设值时是会中断事件产生,所有计数器模式都支持在HSC的当前值等于预设值时产生一个中断事件。使用外部复位端的计数模式支持外部复位中断。除去模式0、1和2之外,所有计数器模式支持计数方向改变中断。
下面以HSC0为例,当前值等于预设值中断、外部复位中断和方向改变中断分别编程如下图所示:
需要注意的是当使用外部复位中断时,不要写入初始值或者是在该中断服务程序中禁止再允许高速计数器,否则会产生一个致命错误。因为外部复位就是清零,再写入初始值无效。没有复位端的工作模式是无法直接复位的,这时只能通过程序复位,可修改高速计数器的初始值特殊寄存器,但还需注意用HSC指令重新激活一次。所有的高速计数器模式都可以通过程序复位。
实践出真知,没有实践,理论就是纸上谈兵;学习中需要多加验证。如果大家觉得小智的文章写得不错,很适合大家的口味,可以分享更多的朋友。
纸上得来终觉浅,绝知此事要躬行
宝剑锋从磨砺出,梅花香自苦寒来
关注智微自控
领取专属 10元无门槛券
私享最新 技术干货