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.

进入PWM中断程序后,PWM的时钟还在计数吗?顺便问下,执行一个程序语句需要的时间是6.63us吗,也就是根据150MHZ算出来的?



如果还在计数的话,那在中断程序里写个延时程序。。。

  • 你用的产品应该是F2833X/F2823X吧,PWM时基TBCTR一直在计数,只要你没有把PWMCLKEN关掉,进入中断只是TBCTR在计数时与TBPRD匹配或者CMPA,CMPB匹配,或者等于0,这个通过寄存器设置,中断触发不代表计数结束,所以你需要计算一个中断服务子程序能在在下个中断到来前完成,否则就中断溢出,另外, 你的系统一定还有后台任务,所以一个中断的间隔时间还要兼顾后台任务,例如状态机,通信等到。一般至少要留百分之20以上的时间。没有理解你为什么要在中断里写延时程序?中断服务程序的概念就是要是越快执行完越好。中断服务程序的时间/PWM中断周期 = ,MCU负载率。

  • 谢谢,我是刚学28335,受教了。所以如果中断服务子程序执行时间在下一个中断还没完成,会发生中断溢出,是什么意思呢,我百度了一下也没弄清楚,麻烦您解答下。另外您说的后台程序应该也是在中断程序里执行的吧,我做的程序里面就有一个transmitsource()的通信程序,我的意思就是,28335是不是不能多任务工作,这是不是应该从硬件结构方面来理解。

  • 当次中断触发后会运行中断服务子程序,当下一次中断又来到,但是上一次的中断服务子程序还没运行完的时候就是中断溢出了。后台程序是指你中断服务子程序运行完后,到下一次中断来的时候中间的时间。所有单核的MCU都只能在一个时间处理一个线程,你说的多任务机制在单核MCU中也是靠操作系统的调度来分时间片运行不同的任务,但是本质上一个时间还是只能跑一个,触发是双核或者多核。