ARMCPU内部存在定时器SysTick可以称为系统滴答定时器,需要查看Cortex-M3->STK_CRTL控制和状态寄存器:
32位寄存器:reserved保留
0位:EN ABLE:使能位,写1开始计时
16位:COUNT FALG:标志位,计数完成自动置1。
1位:TICK INT:中断使能,定时完成是否发生中断,0是默认关闭
2位:CLK SOURCE :时钟源的选择,有arm内核的主频72MHz和八分频72/8=9MHz。
STK_LOAD:重新装载寄存器
要生成一个周期为N个处理器时钟周期的多镜头计时器,请使用N-1的RELOAD值。 例如,如果每100个时钟脉冲需要Sys Tick中断,则将RELOAD设置为99。 如果要在N个处理器时钟周期的延迟后发送一个SysTick中断,则使用值为N的RELOAD。例如,如果需要在400个时钟脉冲后发送一个SysTick中断,则将RELOAD设置为400。
STK_VAL:当前值的寄存器
定时器工作逻辑:
标签:LOAD,99,定时器,中断,滴答,STM32,寄存器,100 From: https://blog.csdn.net/qq_64219867/article/details/143944021首先选择时钟源72MHz,如果在重装载LOAD寄存器的值是N-1存储99,当给EN ABLE使能位置1时,那么它会去LOAD找值,找到99,然后它会将99放到VAL中进行减1,也就是VAL寄存器会不断产生变化,减到0再溢出也即是从99-0-溢出经过100个周期也就是N个周期,然后触发一次中断,然后回到LOAD寄存器99重新经过100个周期触发中断。
下一步我们要考虑定时器多长时间完成减1操作,这里用时钟周期72MHz:1s内减去72M个数或者说 一个数用1/72M秒也就是一个数用去1/72us(微秒)。计算机中1兆是100万,在金融1兆是1万亿