当前位置: 首页 > news >正文

STM32的C语言软件延时函数

STM32的延时方法很多,其中采用定时器延时,可以得到较为精确的延时,但是有时对延时精度要求不高的场合,采用软件延时,也是必须的。特别是在RTOS系统中,使用SysTick的普通计数模式对延迟进行管理,如果需要执行毫秒级延时,会引起系统调度。此时要想不会引起任务调度,就会用到C语言软件延时函数。

实现方法如下:
假设CPU主频为72MHz,时钟周期为1/72MHz=13.88纳秒。当延时10微秒,需要执行的空指令个数为10微秒/13.8纳秒=724个;当延时1毫妙,需要执行72027个周期,相当于延时0.993972.6毫妙。
 

//函数功能:当time=10,需要执行738个周期,相当于延时10.25微妙
void delay_us(u16 time)
{    
   u16 i=0;  
   while(time--)
   {
      i=10;  //自己定义
      while(i--) ;    
   }
}

//函数功能:当time=1,需要执行72027个周期,相当于延时0.993972.6毫妙
void delay_ms(u16 time)
{    
   u16 i=0;  
   while(time--)
   {
      i=12000;  //自己定义
      while(i--) ;    
   }
}

 

 C语言软件延时函数,不会引起软件延时调度,在进入系统之前可能需要这种延时,因此,还是需要的。这使用方法,在51单片机中会经常被用到。

相关文章:

  • Jquery详解
  • 模型和数据集的平台之在Hugging Face上进行模型下载、上传以及创建专属Space
  • 数据存储:一文掌握存储数据到mysql的详细使用
  • HIVE SQL函数之比较函数
  • 51单片机编程学习笔记——LED原理图
  • uni-app 开发 App 、 H5 横屏签名(基于lime-signature)
  • SCIKIT-LEARN 决策树实现csv文档简单的推论预测
  • 分布式爬虫
  • drupal简介
  • 工作中遇到的EXCEL小问题:多行有间隔符的合并
  • 【二分查找】P9698 [GDCPC2023] Path Planning|普及
  • 【SimHash 实现查重功能】
  • 基于 JavaWeb 的 SSM+Maven 微信小程序快递柜管理系统设计和实现(源码+文档+部署讲解)
  • STM32F407ZGT6移植freeRTOS
  • java异步编程接口简介
  • WPF学习之Prism(二)
  • 【HarmonyOS Next】 鸿蒙应用useNormalizedOHMUrl详解
  • Day29 第八章 贪心算法 part02
  • 分布式主键生成服务
  • 医院HIS接入大模型:算力基础设施与训练能力的深度剖析与测算
  • 日菲同意扩大安全合作,外交部:反对任何在本地区拉帮结派的做法
  • 孙磊已任中国常驻联合国副代表、特命全权大使
  • 五一假期上海推出首批16条“市民健康路线”,这些健康提示请收好
  • 准80后湖北省财政厅副厅长徐晶华已调任襄阳市副市长
  • 对话|贝聿铭设计的不只是建筑,更是生活空间
  • 十四届全国人大常委会第十五次会议在京举行,审议民营经济促进法草案等