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

    文章

    10863

    浏览量

    211748
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355985
  • 延时函数
    +关注

    关注

    0

    文章

    25

    浏览量

    10018
  • 定时器中断
    +关注

    关注

    0

    文章

    49

    浏览量

    11181

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

    S7A驱动的两小时破解工具_源程序

    三菱PLC(可编程逻辑控制器)编程实例项目例程——S7A驱动的两小时破解工具,可以方便的破解西门子以太网驱动
    发表于 11-08 17:32 108次下载

    苹果你这是玩我们呢?AirPods 开售两小时售罄

    苹果低调上架 AirPods 了,两小时内被抢购一空,苹果于 9 月份发布了重新定义的无线耳机 AirPods 目前已经开放购买,其售价为 1288 元人民币。苹果官方网站上显示,AirPods 最晚将于 12 月 22 日送达用户手中。
    发表于 12-14 15:43 864次阅读

    比利时研究机构研发400Wh/L固态电池,两小时内充满电!

    比利时研究开发出一种能量密度为400Wh/L的固态电池,可在两小时内充满电。
    的头像 发表于 06-26 16:50 3469次阅读

    片机实现延时两种方法

    来源:大鱼机器人 第一篇 实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确
    的头像 发表于 09-11 14:29 3059次阅读

    单片机实现延时两种方法

    单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序假设使用频率为12 MHz的晶振。最长的
    发表于 11-04 15:36 12次下载
    单片机<b class='flag-5'>实现</b><b class='flag-5'>延时</b><b class='flag-5'>两种方法</b>

    STM32精确延时函数的实现

    与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下S
    发表于 11-24 18:51 12次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>中</b>精确<b class='flag-5'>延时</b>函数的<b class='flag-5'>实现</b>

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

    使用MCU内核寄存器实现毫秒级精确延时方法进行STM32进行开发时,使用到延时函数的频率非常
    发表于 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>

    电瓶修复技术—两小时充满电池可能吗

    的效果,也就是2小时安全充电? 答:铅酸蓄电池想要在2小时内完全充满,除非使用高恒压值大电流,这样会导致大量失水。 一般大功率脉冲充电保证失水可接受的程度下可以2
    发表于 03-29 14:23 2045次阅读

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

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