对LPC守时器与时刻相关的寄存器有PC,PR,TC,MR。
PC——–预分频计数寄存器
PR——–预分频寄存器
TC——–守时计数寄存器
MR——–匹配寄存器
TCR——-守时器/计数器操控寄存器
if(PR == PC)
{
PC = 0;
TC += 1;
}
if{TC == MR}
{
依据MCR的设置进行相应的动作:
1,守时器发生中止
2,TC = 0即TC清零
3,中止守时器TC,PC中止,TCR[0] = 0;即中止守时器/计数器。
}
LPC中的守时器只能向上计数,即从0开端计数。
PC每个PCLK 周期加1 。当其值抵达预分频寄存器中保存的值时,守时器计数器 TC加1 ,预分频计数器在下个PCLK 周期复位。例如,当PR=0 时,守时器计数器每个 PCLK 周期加1 ,当 PR=1 时守时器计数器每 2 个PCLK 周期加1 ,以此类推。
依据文档描绘“当PR=0 时,守时器计数器每个 PCLK 周期加1”这阐明对PCLK进行了分频,这就阐明晰PR为什么叫做预分频寄存器的原因了。可是假如守时器的PCLK是24MHz的,按理说PR=0时,应是12MHZ,可是从示波器上来看如同不是不知为什么?可是关于毫秒的守时,依照文档阐明的推理和实际示波器的测了是准确无误的。
守时时刻 = PCLK / (2PR); 为什么乘2呢?是因为分频的原因,不要忘掉当PR=0时也是有分频效果的哦!