HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
Eric Ma:
shizhong,
timer0是用来产生主中断的定时器,我记得应该是20k,另外两个定时器是用来跑后台任务的,即那个A1,A2的那些任务,所以周期比较长。
Eric
HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
Charles Ji:
回复 Eric Ma:
Eric
你好,现在我想知道,为什么另外两个定时器只有运行到主循环时才启动,而timer0 配置后 StartCpuTimer0();就直接起动了
HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
Eric Ma:
回复 Charles Ji:
因为那两个是后台程序,在主循环中产生作用。
Eric
HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
Charles Ji:
回复 Eric Ma:
Eric
你好,请问这个程序里,那句话将这两个定时器配制成主循环中起作用呢?
HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
Martin Yu:
回复 Charles Ji:
shizhong ji,
该例程采用典型的前后台架构(中断+循环),对三个定时器的使用是不一样的:Timer0用以触发中断MainISR来完成实时控制,每个中断中进行ADC采样、PWM占空比计算等;而Timer1和Timer2只是一般的外部的定时循环,不用于触发中断,只是在for循环中利用中断标志CpuTimer1Regs.TCR.bit.TIF来判断定时周期是否到了,而且定时周期较长(ms级)。配置完之后三个定时器都开始工作,只是后面两个需要等进入主循环for中后才能进行判断标志位然后进行处理,如A0、B0、A1、B1等。
HVBLDC_Sensored这个历程中,使用到三个定时器,
现发现CPUTimer0定时器,配置后立即启动,而CPUTimer1和CPUTimer2,直到主循环for(;;)才开始启动,这是为什么,我发现命令都是一样的。
user4315565:
回复 Martin Yu:
请问是在那里配置的呢?
我在controlsuite llc的例程里找不到相关配置,谢谢!