历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 单片机定时功能用什么实现?有哪几种方式?

发布者:luanzgc 来源: zhihu关键字:单片机  定时功能  延时函数 手机看文章 扫描二维码
随时随地手机看文章

在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几年,终于轮到我装逼了,如果是我,我肯定用自己写的轮询架构去实现。

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

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

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


关键字:单片机  定时功能  延时函数 引用地址:单片机定时功能用什么实现?有哪几种方式?

上一篇:单片机定时器和计数器的概念
下一篇:单片机选型看哪些参数?单片机选型原则

推荐阅读

一直以设计著称的索尼,在今年的MWC上为我们带来了两款旗舰新品,索尼Xperia XZ2和XZ2 Compact。其中XZ2自面世以来,评论就呈现出两极分化的趋势,一边是“美轮美奂”,另一边则是“丑出天际”。当“丑爆了”和“美哭了”这两个词被放在同一款手机上,其设计语言就值得去深究一下。  3月13日,索尼在香港正式发布了Xperia XZ2的国行版,新浪手机也在...
由创新奇智联合镁客网共同举办的“智变与突破——制造业人工智能产业峰会”在南京圆满落幕。本次峰会旨在结合创新奇智人工智能制造业落地实践和成熟解决方案,对智能制造行业当前痛点和发展前景进行深入交流,为2019年“智能+制造”探寻新思路。 峰会现场,与会嘉宾就“中国‘智’造的思考”、“AI在制造业的发展现状与未来”、“AI技术趋势”、“AI在制造...
使用TIM0的频率计算公式f=FOSC/4/PS/TMR0 (TMR0是TIM0的数据寄存器)void main(){ OSCCON = 0x78;//主频率为16M 即FOSC = 16M __delay_ms(50); ANSC6 = 1; TRISC6 = 0; RC6 = 1;//RC6接了一盏LED OPTION_REG = 0xc0;/*TMR0CS = 0(内部指令周期时钟 (F OSC /4)) PSA=0 (预分频器分配给...
去年三月份,比亚迪“刀片电池”的发布让如日中天的三元锂电池遭受暴击,也让不少担心电动车自燃的摇摆消费者坚定了购买信心。时隔一年,搭载磷酸铁锂“刀片电池”的比亚迪汉EV在终端市场持续走红,甚至跟豪华品牌同台竞技;刚刚发布的秦PLUS DM-i也收获颇丰,在终端市场反响强烈。比亚迪“刀片电池”的影响有多大?目前小鹏P7将搭载磷酸铁锂电池的消息传...

史海拾趣

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved