在编程中经常需要精确的延时,或者需要精确的统计一段代码的执行时间,亦或者是需要精确的保证某段代码被
调用的频率。比如需要统计某个函数的执行时间,从而判断开销,又比如在飞控中需要精确的保证每隔 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 = SystemCoreClock / 1000000;
SysTick

本文介绍了如何在STM32平台上利用systick实现精确的延时和获取micro时间,并提供在FreeRTOS系统下移植的详细步骤,包括修改sysTick变量、中断处理函数等。
&spm=1001.2101.3001.5002&articleId=53574093&d=1&t=3&u=043517701fd54f9a85971ba761a995e5)
6987

被折叠的 条评论
为什么被折叠?



