0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在STM32中实现延时两小时功能的方法

无际单片机编程 来源:无际单片机编程 2023-03-31 16:55 次阅读

延时功能,虽然简单,不过不同的延时需求多了,就很头疼。

STM32中实现延时2小时的功能,有以下几种方式:

1.使用延时函数

可以使用STM32提供的延时函数来实现延时功能,延时函数根据CPU时钟频率和延时时间计算出延时的时间,在延时期间CPU处于忙等待状态。

需要注意的是,延时函数会占用过多的CPU资源,并且在延时期间无法执行其他任务。

这种方式是初学者玩的,如果用到实际项目,除了大聪明,我找不到更好的词夸你

2.使用定时器和中断

可以使用STM32内置的定时器和中断来实现延时功能。

将定时器配置为2小时的定时周期,并启用定时器中断。

在中断处理函数中设置标志位表示延时结束,并执行相应的操作。

需要注意的是,定时器中断的频率不能太高,否则会占用过多的系统资源,但中断频率也不能太慢,毕竟定时器是稀缺资源,一个定时器可能有很多不同的定时需求。

这个可能是最多人的选择,毕竟省心、省成本。

3.使用RTC实时时钟

可以使用STM32内置的RTC实时时钟模块来实现延时功能。

将RTC设置为2小时的计时周期,并启用RTC中断。

在中断处理函数中设置标志位表示延时结束,并执行相应的操作。

需要注意的是,RTC的精度相对于定时器较高,但配置和使用上相对复杂。

我一般不会用这种,因为配置比较麻烦,我比较懒。

4.使用外部实时时钟模块

可以使用外部的实时时钟模块,如DS1302等,来实现延时功能。

将实时时钟模块连接到STM32的GPIO口,通过SPI或I2C等总线协议与STM32进行通信,获取当前时间并计算出延时结束的时间。

需要注意的是,外部实时时钟模块的精度和配置相对于RTC更加复杂。

这种方式有点脱裤子放屁的感觉,还会增加硬件成本,不过有些场合确实需要这样做,比如你看老板不爽,老板又不懂技术的时候。

5.无际原创的程序架构

做了单片机开发10几年,终于轮到我装逼了,如果是我,我肯定用自己写的轮询架构去实现。

94a6fe8c-caf2-11ed-bfe3-dac502259ad0.jpg

比如说上面hal_LedProc这个任务,不管我要定时多长时间去执行,我只需要修改一个数值就可以。

比如2小时换算成ms就是7200000ms,任务Tick的时间是10ms,如果想让hal_LedProc任务2小时执行一次,那就设置成72000方可实现。

定时时间到了以后,需要执行什么程序,直接放在hal_LedProc函数里即可,这就很舒服…





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348866
  • 延时函数
    +关注

    关注

    0

    文章

    25

    浏览量

    9967
  • 定时器中断
    +关注

    关注

    0

    文章

    46

    浏览量

    11029

原文标题:stm32如何延时两小时,用哪种方式好?

文章出处:【微信号:nanshuqg,微信公众号:无际单片机编程】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32单片机的延时原理和延时函数方法

    当涉及到单片机编程时,延时是一项常见但关键的任务。在许多应用中,我们需要控制程序暂停一段时间,以实现精确的时间控制或协调不同设备之间的操作。本文将以STM32为例,介绍关于单片机的延时
    发表于 08-09 09:13 1w次阅读

    stm32 滴答时钟实现较准时延时功能

    前记:  以前自己在编写延时函数的时候,经常是for()结构或者while()结构以及do while{}结构。但这3种方法是非常的粗糙,我现在的工作是不能满足其精度的。由于
    发表于 01-08 09:58

    stm32如何延时两小时,用哪种方式好?

    第一种,RTCstm32外接一个RTC时钟芯片,使用方法就是记录当前时间,比如,当前时间是12点24分36秒。然后,主函数里面循环查询时间,当时间到达14点24分36秒时,发送信息。· 误差
    发表于 11-13 09:40

    STM32F407使用HAL库延时微妙实现方法

    STM32F407 使用HAL库延时微妙实现方法STM32CubeMX配置)作者 : 李剀出处 欢迎转载,但也请保留上面这段声明。 谢谢!
    发表于 08-04 08:20

    stm32使用基本定时器实现精确延时

    stm32,系统滴答定时器可以实现精确的延时,但有时需要使用基本定时器实现精确
    发表于 08-16 07:32

    MCU编程STM32延时函数如何去实现

    STM32笔记】[sub]STM32 延时函数的实现在MCU编程,微秒延时和毫秒
    发表于 08-24 07:55

    【原创分享】单片机延时实现方法

    情况下,我们还是会选择定时器来做延时处理,首先我们可以通过时钟配置定时器工作,获得精准计数,具体精准程度要看给定时器用的时钟了,内部时钟或者外部晶振的精度。可以实现极短时间的精确延时
    发表于 10-08 15:32

    如何更高效的去实现STM32按键和延时功能

    STM32定时器的功能包括哪些呢?如何更高效的去实现STM32按键和延时功能呢?
    发表于 11-23 07:59

    知识赋能第二期(入门)两小时玩转git和gitee

    只是赋能第二期(入门)两小时玩转git和gitee
    发表于 12-03 11:09

    两小时DIY速成 罐头盒制作斯特林发动机

    两小时DIY速成 罐头盒制作斯特林发动机,现在,我将使用废弃不用的破铜烂铁制备一个小功率引擎
    发表于 07-23 14:44 4.6w次阅读
    <b class='flag-5'>两小时</b>DIY速成 罐头盒制作斯特林发动机

    STM32单片机SysTick实现精确延时

    STM32单片机SysTick实现精确延时
    发表于 11-23 18:21 11次下载
    <b class='flag-5'>STM32</b>单片机SysTick<b class='flag-5'>实现</b>精确<b class='flag-5'>延时</b>

    STM32延时功能实现方式研究

    STM32常见延时实现方式研究一、阻塞延时函数1. 循环延时(V1.0.0)代码(while形式)测试数据特点总结2. SYSTICK非中断
    发表于 11-24 19:21 4次下载
    <b class='flag-5'>STM32</b>关<b class='flag-5'>延时</b><b class='flag-5'>功能</b><b class='flag-5'>实现</b>方式研究

    STM32实现毫秒级精确延时方法

    使用MCU内核寄存器实现毫秒级精确延时方法在进行STM32进行开发时,使用到延时函数的频率非常高,但HAL库只提供了毫秒级的
    发表于 12-09 13:06 21次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>实现</b>毫秒级精确<b class='flag-5'>延时</b>的<b class='flag-5'>方法</b>

    stm32之HAL库实现us延时方法

    stm32之HAL库实现us延时方法HAL_Delay()源码为ms级别的延时如下:/** * @brief This function provides accurate dela
    发表于 01-17 09:32 5次下载
    <b class='flag-5'>stm32</b>之HAL库<b class='flag-5'>实现</b>us<b class='flag-5'>延时方法</b>

    程序运行在STM32H750的外扩FLASH上两小时后死机该如何处理

    程序运行在 STM32H750 的外扩 FLASH 上两小时后死机
    的头像 发表于 10-24 15:20 2206次阅读
    程序运行在<b class='flag-5'>STM32</b>H750的外扩FLASH上<b class='flag-5'>两小时</b>后死机该如何处理