历史上的今天
返回首页

历史上的今天

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

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

2023-03-14 来源: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函数里即可,这就很舒服…


推荐阅读

史海拾趣

ETERNA公司的发展小趣事

2014年,ETERNA成为了ATP世界网球巡回赛瑞士公开赛的指定合作伙伴。这一合作标志着ETERNA在品牌建设和市场推广方面取得了新的突破。通过与ATP的合作,ETERNA不仅成功地将品牌与高端体育赛事相结合,还进一步提升了品牌形象和知名度。同时,ETERNA还为赛事提供了精准的计时服务,展现了其在电子技术领域的实力。

BURGESS公司的发展小趣事

BURGESS公司于1975年3月13日在伦敦正式成立,这标志着它在游艇经纪行业的起点。创立之初,BURGESS就凭借其专业的知识和敏锐的市场洞察力,在短短四年内成功进驻摩纳哥这一游艇行业的重镇。更令人瞩目的是,在同一年,BURGESS成功售出了当时世界上最大的游艇,这一成就不仅彰显了其卓越的实力,也为其在行业内赢得了极高的声誉。

巴丁微公司的发展小趣事

巴丁微深知人才是企业发展的核心动力。因此,公司始终注重团队建设与人才培养。公司拥有一支由行业精英组成的骨干团队,他们在集成电路设计、研发、销售等方面具有丰富的经验和深厚的专业知识。

同时,巴丁微也积极引进和培养新人才,通过定期的培训和学习机会,提升员工的技能水平和综合素质。公司还建立了完善的激励机制,鼓励员工勇于创新、敢于担当,为企业的发展贡献智慧和力量。

通过以上五个故事,我们可以看出巴丁微在电子行业发展的历程中,始终坚持以技术创新为核心,不断提升产品质量和市场竞争力。同时,公司也注重团队建设与人才培养,为企业的可持续发展提供了有力保障。未来,我们有理由相信巴丁微将继续在电子行业中取得更加辉煌的成就。

请注意,以上故事是基于公开资料编写的,可能与实际情况存在细微差别。如需获取更详细和准确的信息,建议直接联系巴丁微公司或查阅相关官方资料。

Altitude Technology公司的发展小趣事

Altitude Technology公司成立于一个科技迅猛发展的时代,创始人李华怀揣着对电子技术的热爱和对未来科技的憧憬,决定创立一家专注于高度集成和智能化电子产品研发的公司。初期,公司面临着资金短缺、人才匮乏等重重困难,但李华凭借对技术的深刻理解和敏锐的市场洞察力,带领团队开发出了一款具有划时代意义的智能手环,这款产品以其出色的性能和人性化的设计迅速在市场上获得了认可,为Altitude Technology公司赢得了第一桶金。

EPC公司的发展小趣事

最后一家EPC公司深知创新是企业发展的核心动力。公司注重研发投入和人才培养,建立了专业的研发团队和完善的研发体系。公司不断跟踪行业发展趋势和技术动态,积极引进新技术、新工艺和新材料,推动产品升级和产业升级。同时,公司注重创新成果的转化和应用,将新技术、新工艺和新材料应用于实际项目中,提高了项目的竞争力和附加值。通过持续的创新和积累,公司逐渐在电子行业中形成了独特的技术优势和核心竞争力。

请注意,以上故事仅为框架性描述,并未包含具体的公司名称、项目细节和具体数字。您可以根据这些框架性描述进一步深入了解相关公司的发展情况,并结合实际案例进行具体分析和撰写。

API Delevan公司的发展小趣事

品质是API Delevan公司的生命线。公司建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司还注重持续改进,通过引入先进的生产设备和技术手段,不断提高生产效率和产品质量。这种对品质的执着追求使得API Delevan的产品在市场上具有很高的声誉。

问答坊 | AI 解惑

要不要删除重复帖子和复制代码狂

如果单纯为了帖子数量,我支持复制和重复。 但是一个服务器能不能承受这么多复制帖子真让我失望。 比如一个资料,老是发来发去,我觉得很没意思的。 代码也是很多复制,粘贴形式。 解决问题的人少了,都是一些瞎话。比如我帮你顶,我也在等,希 ...…

查看全部问答>

一个简单汇编程序,大家帮忙看看哪错了 谢谢啦

我才学汇编,课后有一个题:判断主存0070:0开始的1KB中有无字符串  DEBUG  ,我编好后用MASM 运行,没错,但是DOS窗口出来总是显示乱码,麻烦大家帮忙看下哪错了~~~~谢谢啦~~~~   下面是全部的代码:   &n ...…

查看全部问答>

在北京的朋友请进!

有人在\"联想利泰\"工作过吗? 那个公司怎么样呀? 做Mobile的项目经理应该能拿多少钱呀? 拜托各位同仁.…

查看全部问答>

分析下面程序写法中的问题

入门同志编写的程序,简析其写法与表达错误! LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY Manchester_encoder IS        PORT(D:IN STD_LOGIC;                  Q ...…

查看全部问答>

为什么同样的测试条件,我们的测试结果不一样呢?

同样的电路HDMI一致性测试,我们北京office的同事和上海的同事测试的结果为什么有时候差距甚大呢?(测试仪器是完全相同的型号,相同的板子)谁有类似的遭遇分享一下?谢谢~~…

查看全部问答>

AP5056 大电流充电管理代理 13927409969 李生

AP5056是一颗超好用的大电流充电管理IC,充电电流可达1A,SOP-8封装。价格低廉,品质稳定,被广泛用于移动电源,PSP等锂电供电产品中。本公司为一级代理商,长期稳定供货。原厂技术支持。需要联系。 …

查看全部问答>

一点一点搭建起程序框架,实现方便移植,异于管理的一个通用模版

这个帖子,实际上可以认为是先前我发的那个帖子 让我们一起来搭建一个 单片机通用程序模版 的 后续篇章。那一章里,主要阐述了我自己的观点和想法,最后觉得比较空,毕竟这个模版要在实际操作中,针对遇到的新情况重新分析,增删修改,才能真正实现 ...…

查看全部问答>

高手们给分析下void (*func(void (*p)(void *)))(void *)

void (*func(void (*p)(void *)))(void *) {      return p; }看了好久没怎么明白。这样写的意思,目的。 [ 本帖最后由 zw357234798 于 2012-9-4 07:39 编辑 ]…

查看全部问答>

新手求助帖:51单片机串口控制LED灯

刚接触51单片机的串口知识,遇到一个问题,希望大家解答 串口控制LED灯的程序: #include unsigned char flag; unsigned char temp; main() {   TMOD=0x20;   TH1=0xFD;   TL1=0xFD;   TR1=1; ...…

查看全部问答>

LM3S9B96的lwip加入GPIO代码后问题

本人刚接触9b96时间不长,现在遇到这样一个问题:   采用的UDP协议,初始化配置后简单的发送与接收都正常,但是中间加入其他一些GPIO配置 ,整个程序就无法正常工作,也ping不通板子。 不知道大侠们知道其中的问题吗 ?真心请教! 就加 ...…

查看全部问答>