本帖最后由 编号10086 于 2021-7-14 17:34 编辑
小弟最近在熟悉这款单片机,其实在前几天看官方例程(KF32Fxxx_EVL_Examples\CCPx
CCPx_Compare_Mode.zip
(9.1 KB)
)的时候就对比较中断有疑惑了。
这几天花了很多时间,把通用定时器和CCPX的寄存器手册看了一遍,疑惑更深了。
我甚至怀疑这款单片机是不是没有比较中断?
首先,我们来看一下这个官方的例程。
它的注释是这样写的:用户可参考该例程在KF32F350_demo板上实现比较模式的配置功能。 例程中使用CCP0模块实现比较模式,PE1 为CCP0_CHANNEL_1 PE2为CCP0_CHANNEL_2 PA2为CCP0_CHANNEL_3 PA2为CCP0_CHANNEL_3,当在比较周期匹配后产生中断,然后再在 中断里再次设置CCP0_CH1通道的比较值,判断比较值后把PB8进行电平翻转。PB8对应LED0灯的控制,挂示波器可以看到PB8输出60HZ 占空比50%的信号。
但是,实际上,那个中断是溢出中断,而不是比较中断。在溢出中断中也没有判断比较值,只是修改了比较值。
例程的做法是,在溢出中断中,修改比较值,然后根据比较值会拉高或者拉低,PE1的电平。
在这一过程中并没有产生比较中断。
也就是说当Tx与Ry相等时,并没有产生一个比较中断,而是直接拉高或者拉低了CH1的电平。
而选择另外一种模式:产生软件中断。
这个模式产生了比较中断,但是可能是因为我配置的问题,这个中断是和溢出中断同步的。
|