【HAL库】STM32CubeMX开发----非阻塞延时实验----SysTick(滴答定时器)中断

news2025/1/11 0:25:42

STM32CubeMX 下载和安装 详细教程
【HAL库】STM32CubeMX开发----STM32F103/F207/F407----目录


前言

HAL库 有自带的 ms级 延时函数: HAL_Delay();
缺点: 这是阻塞延时方式,就是延时期间,什么都不能干,这样很浪费资源。
这篇文章主要介绍,利用SysTick(滴答定时器)中断实现非阻塞延时的实验。

STM32F407----非阻塞延时实验

主要是利用SysTick(滴答定时器)中断中有一个计数变量,每1ms加1,通过获取这个时间数值变量,实现非阻塞延时。

相关 HAL库 函数

/**
  *@功能:获取以毫秒为单位的tick值
  *@参数:无
  *@返回值:以毫秒为单位的tick值
  */
__weak uint32_t HAL_GetTick(void)
{
  return uwTick;
}

获取2个时间点之间的时间间隔的函数

这个函数需要自己手动编写。

具体代码如下:

/**
  *@功能: 获取2个时间点之间是否达到期望的延时
  *@参数1:现在的实时时间
  *@参数2:开始计时的时间
  *@参数3:要延时的时间间隔
  *@返回值:0-延时时间未到,1-延时时间已到
  */
uint8_t Get_Time_Interval(uint32_t Current_Time, uint32_t Past_Time, uint32_t Delay_Time)
{
    if(Current_Time < Past_Time)//实时时间小于开始时间,时间计数发生回滚
    {
        if(0xFFFFFFFF - Past_Time + Current_Time >= Delay_Time)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else        //实时时间大于开始时间
    {
        if(Current_Time - Past_Time >= Delay_Time)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

使用方法举例

实验内容:实现每隔1s,通过串口发送数据。

具体代码如下:

//非阻塞延时实验举例
void Non_blocking_delay_example(void)
{
      static  uint32_t  Static_Time = 0;//创建一个时间数静态变量
    
      if(Get_Time_Interval(HAL_GetTick(),Static_Time,1000)==1)
      {
        Static_Time = HAL_GetTick();
        printf("工欲善其事,必先利其器。");
      }
}

将此函数在主函数中调用即可,具体如下:

在这里插入图片描述

运行结果如下:
在这里插入图片描述


关于串口通信实验的详细信息,请看这篇文章:【HAL库】STM32CubeMX开发----STM32F407----Uart串口通信实验


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

便携式车用CAN分析仪

产品简介 USBCAN-C系列便携式车用CAN分析仪&#xff0c;通过USB接口快速扩展一路CAN通道&#xff0c;使接入CAN网络非常容易&#xff0c;它具有一体式和小巧紧凑的外形&#xff0c;特别适合于随身携带。CAN接口采用金升阳电源模块和信号隔离芯片实现2500V DC电气隔离&#xff0…

能源设备智能维修AR远程作业指导平台降低运营成本

AR远程专家指导系统是一种基于AR增强现实技术搭建的远程协作解决方案&#xff0c;它可以让专家全视角掌握操作现场&#xff0c;并将专精知识和技能传递给远程现场的工作人员&#xff0c;以帮助他们解决各种技术难题和困难&#xff0c;赋能各行各业行业。 现场人员通过手机、平板…

OJ练习第104题——格雷编码

格雷编码 力扣链接&#xff1a;89. 格雷编码 题目描述 n 位格雷码序列 是一个由 2n 个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围 [0, 2n - 1] 内&#xff08;含 0 和 2n - 1&#xff09; 第一个整数是 0 一个整数在序列中出现 不超过一次 每对 相邻 整数…

数据流图(DFD)这么理解吗?

如何画好数据流程图&#xff08;DFD&#xff09;&#xff1f; 步骤&#xff1a; 确定系统的 input 和 output。由 表层 到 深层 画系统的顶层数据流图。自顶向下 逐层 分解&#xff0c;画出分层数据流图。 一、理解数据流图 基本概念 ~~ 数据流图 数据流&#xff08;箭头&…

linux pinctrl 和 gpio 子系统 LED驱动

pinctrl 和 gpio 子系统 借助 pinctrl 和 gpio 子系统来简化 GPIO 驱动开发 pinctrl 子系统 pinctrl 子系统&#xff08;drivers/pinctrl&#xff09;的主要工作内容&#xff1a; ①、获取设备树中 pin 信息。 ②、根据获取到的 pin 信息来设置 pin 的复用功能 ③、根据获…

校招失败后,4面字节跳动软件测试工程师,竭尽全力....

下面是我面试字节跳动软件测试工程师的面试经验总结&#xff0c;希望能帮助到你们。 面试一 简单做一下自我介绍简要介绍一下项目/你负责的模块/选一个模块说一下你设计的用例get请求和post请求的区别如何判断前后端bug/3xx是什么意思说一下XXX项目中你做的接口测试/做了多少次…

免费润色文章的软件-自动修改文章润色的软件

免费润色文章的软件 免费润色文章的软件可以帮助用户快速地改善文本质量&#xff0c;进一步提高语言表达能力和流畅性&#xff0c;以下是其主要优势&#xff1a; 高效性&#xff1a;免费润色文章的软件能够快速进行润色处理&#xff0c;为用户节省时间和精力。相比手动润色的方…

瑞芯微RK3588核心板远程会诊等医学解决方案

RK3588处理器在医学领域的应用中&#xff0c;可以为远程会诊提供高性能和可靠的解决方案。以下是基于RK3588的远程会诊医学方面的解决方案&#xff1a; 远程高清图像传输&#xff1a; 利用RK3588处理器的高性能图像处理能力和高速网络接口&#xff0c;实现高清医学图像的实时传…

Dubbo 基于xml文件分析主流程源码 (4)

目录 前提 JDK实现SPI Dubbo实现SPI Dubbo源码 1. 找到Dubbo的命名空间处理类&#xff0c;也就是Dubbo的入口类 2. 将dubbo标签交给spring进行管理&#xff0c;就是从 BeanDefinition----> Bean的过程。 3. 服务暴露 4. 服务引入 总结 仿写Dubbo 前提 1. Dubbo源码…

CentOS7 yum update y更新后黑屏解决方案

解决方法 一 可以ssh访问 因为update的时候更新了系统内核&#xff0c;导致驱动问题&#xff0c;所以会黑屏。 更改一下yum的配置即可解决: vi /etc/yum.conf#增加&#xff1a;excludecentos-release*excludekernel*如果以上问题还未解决&#xff0c;可以试试下面的方法 其…

架构模式之分层模式

1 概念 分层架构模式是一种非常常见的架构设计模式&#xff0c;很多人都在用&#xff0c;可能不知道它的概念。分层模式背后的理念是&#xff0c;具有相同功能的组件将被组织成水平层。因此&#xff0c;每一层在应用程序中都扮演着特定的角色。 在这种模式中&#xff0c;…

自学自动化测试,第一份工作就18K,因为掌握了这些技术

我个人的情况是有1年自动化测试工作经验半年的实习经验&#xff0c;2020年毕业&#xff0c;专业通信工程&#xff0c;大一的时候学过C语言&#xff0c;所以一直对于编程感兴趣&#xff0c;之所以毕业后没做通信的工作&#xff0c;通信行业的朋友应该都明白&#xff0c;通信的天…

DolphinScheduler3.1.5安装部署

1.下载 DolphinScheduler下载地址&#xff1a;https://dolphinscheduler.apache.org/zh-cn/download/3.1.5 选择二进制包 下载&#xff0c;点击 jar 名称 就行 ​ 2.环境 CentOS Linux release 7.5.1804 (Core)java version "1.8.0_212"mysql version 5.7.16-log…

信息化 VS 数字化,哪个更适合当代企业?

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 现在大家都在谈数字化转型升级&#xff0c;那到底什么是数字化&#xff0c;是不是新瓶装旧酒呢&#xff1f;今天就和大家来谈谈…

【华为机考】专题突破 第二周:前缀和与差分 1109

刷题顺序参考于 《2023华为机考刷题指南&#xff1a;八周机考速通车》 前言 前缀和是指某序列的前n项和&#xff0c;可以把它理解为数学上的数列的前n项和&#xff0c;而差分可以看成前缀和的逆运算。合理的使用前缀和与差分&#xff0c;可以将某些复杂的问题简单化。 关于各类…

CnOpenData中国标准数据

一、数据简介 按照《中华人民共和国标准化法》的定义&#xff0c;标准是指农业、工业、服务业以及社会事业等领域需要统一的技术要求。标准作为一种通用性的规范语言&#xff0c;在合理利用国家资源、保障产品质量、提高市场信任度、促进商品流通、维护公平竞争、保障安全等方面…

机器学习-9 降维算法——PCA降维

降维算法 算法概述降维的概念降维的作用降维的本质常见算法分类主成分分析&#xff08;PCA&#xff09;降维分析 算法流程PCA算法的流程图PCA算法的实现步骤协方差矩阵 算法应用sklearn库中的主成分分析PCA实现高维数据可视化鸢尾花案例手写体数字图像识别案例 算法总结PCA算法…

MyBatis缓存-一级缓存--二级缓存的非常详细的介绍

目录 MyBatis-缓存-提高检索效率的利器 缓存-官方文档 一级缓存 基本说明 一级缓存原理图 代码演示 修改MonsterMapperTest.java, 增加测试方法 结果 debug 一级缓存执行流程 一级缓存失效分析 关闭sqlSession会话后 , 一级缓存失效 如果执行sqlSession.clearCache(…

linux安装nacos步骤

安装前提&#xff1a;服务器已安装JDK 一、nacos下载 Nacos下载地址&#xff1a;Releases alibaba/nacos GitHub 根据springboot版本选择nacos版本 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 二、nacos解压、修改配置文件 #选择安装目录 cd /home/dxhy/appl…

一款基于 Spring Cloud 开源的医疗信息系统

今天给大家介绍一个医院信息系统开源项目&#xff0c;相对比较完整&#xff0c;采用的技术栈是 Spring cloud和Spring boot 2.x&#xff0c;比较主流&#xff0c;正在做这方面系统的童鞋们可以参考一下&#xff01; 主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管…