23、STM32 上系统精确延时与获取 micro 时间函数的实现(FreeRTOS 中也能移植)


        在编程中经常需要精确的延时,或者需要精确的统计一段代码的执行时间,亦或者是需要精确的保证某段代码被

调用的频率。比如需要统计某个函数的执行时间,从而判断开销,又比如在飞控中需要精确的保证每隔 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 &#
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值