This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28377S CLA触发

发现了这样一个情况:

首先配置好:PWM4计数到一定值,比如m,会产生pwm4_INT,配置pwm4_INT触发CLA

 然后我的程序是这样执行的:

        1.打开pwm4计数,关闭pwm4_INT使能

           代码段1

         2. 清除pwm4的中断标志,使能pwm4_INT

           代码段2  

           由于代码段1需要用到pwm4干别的事,所以这一阶段要使能计数;但这一阶段不想触发CLA,在代码段2中,当PWM4每次计数到

          m时,触发进入CLA

         但事实上发现:第2步时,使能中断之后会立刻进入CLA一次,无论此时pwm4的计数值是否达到m,此后正常

         很是疑惑

        去论坛上看到一个人问,他使用ADC触发CLA的,他的问题是为什么不使能ADC的中断,只开CLA的中断就行?

        有个人的解答是,而当有了CLA之后,ADC采样完,产生ADC中断标志,这个标志可以用来触发CLA任务,相当于执行中断服务程序。如此可以释放CPU的负           担,CPU就不用进入去处理这个中断了,因此不打开对应的PIE级别中断和IE级别中断。

       看完之后我又看了下我的程序,确实没有关于pwm4中断的配置,也没有中断服务子函数,我想:是不是在代码段1的运行过程中,计数到m,本来应该产生中断的,但中断没使能,造成什么东西被记住了,所以后面一使能中断就进入CLA?而且这个被记住的东西还没法通过清除PWM4的中断标志位消除,正如上面那个解答所说,这里面的PWM4_INT是“徒有虚名”?

        大致就类似一个使能中断就进入中断服务子程序的问题一样,只不过这时并没有真正通过PWM4_INT去触发的CLA,所以通过清除PWM4的中断,无法阻止立刻进入CLA

      不知道我的猜想对不对,或者诚恳对我所遇到问题的原因进行解答。谢谢。

 

  • 抱歉没有很明确你的问题。你的意思是程序中有其他语句触发了CLA中断?
    建议你可以尝试先单步运行查找一下具体是哪句语句。另外可以贴一下文中提到的问题的链接,我可以参考一下