STM32 ---deley延时两行代码实现【为方便移植文件】

2023-11-18

一、前提简述

优点:无需定时器!仅两行代码!

缺点:不够精准;

应用理由:很多文件移植后,发现delay都需要外部文件支持;那,不如在文件内定义一个,方便各文件移植;

应用要求:STM32F103系列,默认72MHz系统时钟,任何一个工程,复制粘贴后都能用!


二、毫秒延时 delay_ms ()

  • 实测误差: 1%以内,没有中断打断的情况;
  • 适合I2C等低速通信延时,及模块上电延时等待;不适合速度要求精准的延时;
static void delayMs(u32 ms)
{
    ms=ms*7979;                  
    for(u32 i=0;i<ms;i++);        // 72MHz系统时钟下,每7979个空循环约耗时1ms
}

三、微秒延时 delay_us ( )

  • 实测误差:10us时误差20%;50us时误差10%;1000us时误差20%;
  • 适合I2C等低速通信延时,及模块上电延时等待;不适合速度要求精准的延时;
static void delayUs(u32 us)
{   
    us = us * 9;
    for(u32 i=0; i<us; i++);        // 72MHz系统时钟下,每9个空循环约耗时1us    
}

四、精准延时

如果要求精准的延时,最理想的实现方法是:SysTick中断。比用Tim更适合移植。

精准延时的详细代码,及应用于其上的任务轮询器,已上传分享到STM32技术Q群文件夹中:887199504,自由下载。

本文完~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 ---deley延时两行代码实现【为方便移植文件】 的相关文章

  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 如何阻止 PHP sleep() 影响我的整个 PHP 代码?

    所以 在我的街机上 howlingdoggames com 我有一个积分系统 每次您访问正在进行游戏的页面时 都会给您一个积分 为了减少滥用 我想进行某种延迟 因此仅在 45 秒后授予 这是我尝试过的 if SESSION lastgame
  • for循环延时时间计算

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 之前做led点亮的实验 好像是被delay函数影响了 因为delay参数设置的不对
  • for 循环被忽略(优化?)

    我正在使用 for while 循环在我的代码中实现延迟 延迟的持续时间在这里并不重要 尽管它足够大而引人注目 这是代码片段 uint32 t i Do something useful for i 0 i lt 50000000U i D
  • 如何获得可靠的 Cortex M4 短延迟

    我正在将一些代码从 M3 移植到 M4 它使用 3 个 NOP 在串行输出时钟更改之间提供非常短的延迟 M3指令集将NOP的时间定义为1个周期 我注意到 M4 中的 NOP 并不一定会延迟任何时间 我知道我需要禁用编译器优化 但我正在寻找一
  • 如何在Unity和C#中延迟一个方法?

    我的名字是 Laurenz 我的问题是如何使用 c 延迟 Unity 中精灵的颜色变化 现在我有一个随机生成器 它根据数字选择颜色 但这种情况每帧都会发生 所以现在真正的挑战是如何延迟它以减少它的变化 public class colorc
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • 自动从启动屏幕快速 UI 导航到另一个屏幕,并带有延迟时间

    我是 IOS 和 Swift UI 的新手 在启动屏幕后无法导航到登录屏幕 我如何导航到登录屏幕 请帮帮我 我真的很感谢你们的所有回答 import SwiftUI import Dispatch struct SplashScreen V
  • Android 应用程序启动首次启动需要更多时间,甚至有时需要 30 秒或更长时间

    以下是应用程序首次安装时的日志 05 12 13 16 23 632 28250 28250 com app projectName W 系统 类加载器引用未知路径 data app com app projectName 1 lib ar
  • 如何在Javascript中延迟setInterval?

    我现在在 JavaScript 中反复遇到一个奇怪的问题 我似乎无法拖延setInterval longer 发生情况的一个小例子 var loop var count loop setInterval start 30 function
  • ServerManager CommitChanges 进行更改时略有延迟

    我对 ServerManager 类 来自 Microsoft Web Administration 程序集 有一个小问题 我希望你们中的一些人可以帮助我 基本上 我需要在站点内创建一个新应用程序 使用 IIS 7 5 并将用户重定向到同一
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • HTML LocalStorage 中的数据在其他窗口/选项卡中可用所需的时间

    我有一个使用 HTML LocalStorage 的网页 同时打开此页面的多个选项卡 窗口是很常见的 由于这些都使用相同的 LocalStorage 并且 LocalStorage 不提供事务或类似功能 因此我想实现某种形式的互斥 以防止不
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • 如何用jquery一一显示和隐藏每个div

    我想创建一个快讯标题 但我不知道问题出在哪里 因为我是网页设计的初学者 D so 我想创建标题的一部分 显示 淡入 一个标题并延迟隐藏 淡出 然后显示下一个标题 不停地循环 请帮助我学习如何创建 D 这些是我写的代码 div div cla
  • Visual Studio 2010 - 如何优化

    我正在使用 2010 版的 Visual Studio 但遇到了许多延迟问题 我的计算机具有良好的 RAM 和处理器配置 特别是在保存文件时 目前 我正在进行一个中型项目 只有一个打开文件 ASP NET 页面 使用第三方 Telerik
  • Android中每10秒显示一次数据

    我必须每 10 秒后显示一些数据 谁能告诉我该怎么做 您还可以使用另一种方法按特定时间间隔更新 UI 以上两个选项都是正确的 但根据具体情况 您可以使用替代方法在特定时间间隔更新 UI 首先为 Handler 声明一个全局变量 用于从 Th
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 如何在 MOS 6502 的 asm 中创建延迟

    我是 ASM 新手 我正在尝试研究如何为以下代码创建延迟 org 1000 loop inc d021 jmp loop 我想评论已经足够清楚了 每帧更改颜色的代码示例 1 50 秒 sei enable interrupts loop1

随机推荐

  • IB计算机科学选课,IB体系应如何正确选课?

    原标题 IB体系应如何正确选课 选择国际学校最重要的环节就是选课 这决定了你之后的学习方向和计划 甚至影响到成绩的好坏 目前很多国际学校都是IB体系 IB课程除了重视基础知识教学 还有学生的综合素质培养 教学大纲也是与时俱进5年一换 IB体
  • Vue3 + Vite3 + Element-Plus 管理系统

    Vue3 Vite3 Element Plus 管理系统 介绍 vue diverse admin 基于 Vue3 TypeScript Vite3 Element Plus 开源的一套后台管理模板 项目均使用JS开发 但已经配置TS 可以
  • 【VHDL】随机存储器RAM、只读存储器ROM

    VHDL 随机存储器设置 RAM程序 LIBRARY IEEE USE IEEE STD LOGIC 1164 ALL ENTITY RAM 8 IS PORT CS RD WR IN STD LOGIC CLK IN STD LOGIC
  • Android SDK的安装教程

    Android SDK的安装教程 Android4 1虽说已经发布了好些天 但由于的我手机比较坑 系统依旧保持在2 3 4 0的都是可望不可即的了 就别说4 1 由于资金的问题 没法换手机 只能另想方法 通过在笔记本上装android4 1
  • java实现,如何在当前时间往后推三十天

    Calendar cal Calendar getInstance cal add Calendar Date 30 Date date cal getTime
  • topaz全家桶中文_apache 开源项目全家桶 2020年12月中文介绍

    apache项目全家桶 很多apache开源项目特别好 但是没什么能汇总的文档 我来整一个 不定期更新 big data 50 Project Apache Accumulo star 838 github https github com
  • shell脚本基础4——function函数、expect

    文章目录 一 function函数 1 1 函数的定义使用 1 2 函数参数 1 2 1 脚本内传参 1 2 2 脚本外传参 1 3 引用局部变量 1 3 1 区分局部变量 1 3 2 全局变量在函数外 1 3 3 全局变量在函数体 1 3
  • windows检测文件夹是否更新.bat脚本 windows循环检查文件夹

    最近在写windows脚本 记录一下一个很有用的信息 参考 https zhidao baidu com question 2208474390884363868 html 转载于 https www cnblogs com ChenCha
  • Python3 使用 matplotlib 画折线图

    ChartUtil py import matplotlib pyplot as plt from pylab import mpl def plotLine xData yData xLabel chartTitle mpl rcPara
  • matlab:基本操作与矩阵输入

    学习素材 MATLAB教程 台大郭彦甫 14课 原视频补档 MATLAB教程 台大郭彦甫 14课 原视频补档 哔哩哔哩 bilibili 部分素材使用视频截图 目录 一 基本运算 二 关键字 三 format 四 符号 1 2 colon
  • [ACTF 2020 新生赛] Exec

    Exec ping 127 0 0 1 ls ping 127 0 0 1 nl f
  • ABAP实现粘贴板的操作,复制粘贴_SAP刘梦_新浪博客

    ABAP可以实现复制粘贴的操作 自己玩儿 项目里暂时用不到 在ABAP中的 CLASS CL GUI FRONTEND SERVICES中提供了两个方法来控制与剪贴板内容的导入导出 分别是 CLIPBOARD EXPORT和CLIPBOAR
  • Git学习笔记【1】---本地操作

    声明 本教程参考自https www bilibili com video BV1Zz4y1C7vg p 17 一 Git的安装 官网下载即可 https git scm com 二 初始化本地仓库 1 创建一个文件夹 2 打开Git终端
  • Java常用System类

    java lang System类中提供了大量的静态方法 可以获取与系统相关的信息或系统级操作 在System类的API文档中 常用的方法有 public static long currentTimeMillis 返回以毫秒为单位的当前时
  • 移动互联网终端的touch事件,touchstart, touchend, touchmove

    前言 如果我们允许用户在页面上用类似桌面浏览器鼠标手势的方式来控制WEB APP 这个页面上肯定是有很多可点击区域的 如果用户触摸到了那些可点击区域怎么办呢 诸如智能手机和平板电脑一类的移动设备通常会有一个电容式触摸屏 capacitive
  • 微信小游戏关系链能不能获取到服务器,关系链互动数据

    关系链互动数据 在开放 关系链数据能力 的基础上 小游戏新增 互动型托管数据 提供关系链互动能力 用于实现小游戏内微信好友互动 点赞 送礼物等 的功能 关系链互动数据能力支持 好友间互赠 50 种游戏内道具 提供成功互动后的主域回调 满足互
  • maven项目引入外部文件(资源)

    1 maven项目如何引入外部文件 maven项目一般在main目录下分为java和resources 前者是源码 后者是资源 含外部文件 在maven的pom xml中指定resources所在目录后 当maven编译时 resource
  • python3+requests:接口自动化测试(二)

    前言 上篇文章python3 requests unittest 接口自动化测试 一 已经介绍了基于unittest框架的实现接口自动化 但是也存在一些问题 比如最明显的测试数据和业务没有区分开 接口用例不便于管理等 所以又对此修改完善 接
  • OPENCV角点检测和亚像素级检测

    首先进行粗检测 函数goodFeaturesToTrack 存储进入corners中 然后cornerSubPix函数进行亚像素精确匹配 设置结束条件 由于实际应用中线条较粗 因此 CORNER BLOCKSIZE 9 CORNER QUA
  • STM32 ---deley延时两行代码实现【为方便移植文件】

    一 前提简述 优点 无需定时器 仅两行代码 缺点 不够精准 应用理由 很多文件移植后 发现delay都需要外部文件支持 那 不如在文件内定义一个 方便各文件移植 应用要求 STM32F103系列 默认72MHz系统时钟 任何一个工程 复制粘