在编程中经常需要精确的延时,或者需要精确的统计一段代码的执行时间,亦或者是需要精确的保证某段代码被
调用的频率。比如需要统计某个函数的执行时间,从而判断开销,又比如在飞控中需要精确的保证每隔 2m 调用一
次读取传感器的函数,可以使用定时器去实现。在 STM32 平台上,我们可以充分的利用 systick 去实现。
static volatile uint32_t sysTickMillis = 0;
static const uint32_t sysTickPerUs = 72; /* 系统时钟频率 - 72MHz */
/* 检查是否溢出 */
static int systick_check_underflow(void)
{
return SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk;
}
/* systick 中断服务程序 */
void SysTick_Handler(void)
{
__disable_irq();
systick_check_underflow();
sysTickMillis++;
__enable_irq();
}
/* systick 初始化 */
void systick_init(void)
{
sysTickPerUs &#