尊敬的香榭丽舍
我向我们的客户提出这一问题。
32位 CPU 定时器是否具有最低频率限制?
如果是、我们如何计算它?
黄维恩
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.
尊敬的香榭丽舍
我向我们的客户提出这一问题。
32位 CPU 定时器是否具有最低频率限制?
如果是、我们如何计算它?
黄维恩
您好、Wayne、
Ozino 是正确的 CPU 定时器0/1运行在 SYSCLK 上、但是 CPU 定时器2可以使用 INTOSC1、INTOSC2、XTAL 或 AUXPLLCLK。
不同的时钟选项如下所述 (来自数据表):
INTOSC1/INTOSC2都是10MHz 内部振荡器。
对于 XTAL (数据表中的参考表) 、如果您在 X1/X2之间使用外部晶振或谐振 器、则最小频率为10MHz。 但是、如果您使用连接到 X1的单端时钟、则可以实现的最小频率为2MHz。
AUXCLKIN 频率也是如此(最小值=2MHz)。 请注意、如果需要 USB 功能、辅助时钟(AUXPLLCLK)必须配置为产生60MHz。 在这种情况下、您可以将计时器2的时钟源从连接到 X1的 XTAL ->单端时钟、该 X1的最小频率为2MHz。
此致、
Marlyn
韦恩、
定时器周期的计算如下所示(可在 ConfigCpuTimer 函数中找到)
uint32温度; // //初始化计时器周期: // Timer->CPUFreqInMHz =频率; Timer->PeriodInUSec =周期; temp =(long)(Freq * period); // //计数器每个周期递减 PRD+1次 // Timer->RegsAddr->PRD.All = temp - 1;
您可以加载到 PRD 寄存器(32位寄存器)的最大值为0xFFFFFFFF。 您可以根据您选择的时钟(2MHz 是最低的)并根据您配置的预分频值、返回并计算要传递的周期值。
此致、
Marlyn