我第一次使用 Systick 使用 samd21e15b,所以我的目标是能够计算延迟之间的时间。所以这就是我尝试做的
SysTick->CTRL = 0;
SysTick->LOAD = 0x7A11FFul;
SysTick->VAL = 0;
SysTick->CTRL = 0x5;
while(SysTick->VAL == 0);
uint32_t start = SysTick->VAL;
delay_ms(1000);
uint32_t stop = SysTick->VAL;
uint32_t volatile temps = start - stop;
所以我设置SysTick->LOAD = 0x7A11FFul
是因为我的 CPU 以 8Mhz 运行并且我想要 1s 滴答声,所以来自这个数学
N = (SysTick 延迟时间/系统时钟周期) - 1
=(SysTick 延迟时间 * 系统时钟频率) - 1
= (1s * 8MHz) - 1 = 8M - 1 = 7,999,99
因此,如果我的 cpu 以 8MHz 运行,我每 125ns 有一个 cpu 周期,对吗?但是如果我检查temps
变量我有一个311
延迟 1s 后的值,我不明白这个值