历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | STM32实现对RTC闹钟唤醒的设计

2020-02-05 来源:elecfans

工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制的外设有些不妥,想过外部上拉一个电阻可是功耗不好控制放弃该方案选用停止模式。停止模式后IO口保持停止前的状态,但是不像待机模式那样可以轻松通过闹钟唤醒,只能通过中断线实现唤醒。为了实现RTC闹钟唤醒搜得一段代码,现贴过来分析一下

void RTC_EXTI_INITIAL(FuncTIonalState interrupt_en_or_dis)

{

NVIC_InitTypeDef NVIC_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

//------------EXTI17 配置 -------------------

EXTI_InitStructure.EXTI_Line = EXTI_Line17;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd = interrupt_en_or_dis;

EXTI_Init(&EXTI_InitStructure);

//------------设置 中断-------------------

NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;//防拆

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = interrupt_en_or_dis;

NVIC_Init(&NVIC_InitStructure);

//-------------------------------------------

}

void RTC_SET_ALARM(u32 sec)

{

//DEBUG_COM_STREAM(“-闹钟-”,NULL);

RTC_SetAlarm(RTC_GetCounter()+sec);

//DEBUG_COM_STREAM(“-闹钟1-”,NULL);

RTC_WaitForLastTask();

//DEBUG_COM_STREAM(“-闹钟2-”,NULL);

RTC_ITConfig(RTC_FLAG_ALR,ENABLE);

}

void RTC_AWU_SET(void)

{

//启用PWR和BKP的时钟(from APB1)

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

//后备域解锁

PWR_BackupAccessCmd(ENABLE);

RTC_ITConfig(RTC_IT_SEC, DISABLE);

RTC_SET_ALARM(5);

//PWR_BackupAccessCmd(DISABLE);

RTC_EXTI_INITIAL(ENABLE);

}

void RTCAlarm_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line17);

//SYS.wake_id|=1《《17;

}

void RTC_IRQHandler(void)

{

if (RTC_GetITStatus(RTC_IT_SEC) != RESET)

{

RTC_ClearITPendingBit(RTC_IT_SEC);

RTC_WaitForLastTask();

//TIME_COUNT=RTC_GetCounter();

//RTC_WaitForLastTask();

}

if (RTC_GetITStatus(RTC_FLAG_ALR) != RESET)

{

RTC_ClearITPendingBit(RTC_FLAG_ALR);

RTC_WaitForLastTask();

//SYS.wake_id|=1《《1;

}

}

对于上述代码说明3点问题:

(1)为什么设置中断线17

STM32F10x有20条中断线,其中16条用于IO口中断使用,还有4条用于内部中断事件。EXTI17就是用于内部RTC闹钟唤醒中断事件时使用,所以初始化中除了打开RTC闹钟中断同时打开了EXTI17中断线。

STM32实现对RTC闹钟唤醒的设计

(2)为什么RTC闹钟中断服务程序清除EXTI17中断标志位?

因为中断线17接到了RTC闹钟上,RTC闹钟中断后会触发中断线17产生中断事件,所以在RTC中断内清除标志位,这同时是RTC闹钟唤醒停止模式的原因。具体看下图手册描述

STM32实现对RTC闹钟唤醒的设计

(3)唤醒后程序在哪执行?

通过实验得到当系统唤醒后程序是在原停止位置顺序向下执行。

PS:唤醒后时钟源默认切换到内部高速时钟(HSI)所以使用外部晶振的需要重新配置时钟系统

推荐阅读

史海拾趣

Habia Cable公司的发展小趣事

在电子行业中,高博(GBG)公司的发展涉及多个领域和维度,以下是根据不同业务线整理出的五个相关发展故事,每个故事均基于事实描述:

1. 高博教育:私立高等教育与终身学习的引领者

高博教育作为全球教育管理集团(GEM)在中国的旗舰机构,由前摩托罗拉中国区总裁赖炳荣先生创立。公司坐落于苏州工业园区独墅湖高等教育区,致力于发展私立高等教育和终身学习。高博教育成功与香港大学及苏州科技学院合作,创办了苏州港大思培学院,成为江苏省首家香港与内陆合作的院校。此外,高博还与微软(中国)有限公司合资建设苏州高博软件技术学院,开展多层次的软件人才教育,成为江苏省软件人才培养的重要基地。高博教育通过整合全球优质教育资源,为学员提供国际化的课程和学习空间,培养了大量高素质、实用型和国际化的软件人才。

2. 高博(鞍山)半导体有限公司:LED技术的创新者

高博(鞍山)半导体有限公司成立于2019年,位于辽宁省鞍山市,是一家专注于研发、生产及销售LED发光二极管的企业。公司为客户提供多元化的产品,广泛应用于计算机、通讯、消费类电子、汽车电子、工业自动化及医疗等领域。高博(鞍山)半导体有限公司凭借其在LED技术领域的创新能力和完善的产品链,迅速在市场中占据一席之地。公司不仅拥有多项专利和著作权,还积极投资研发,推动LED技术的不断进步。

3. 高博起重设备:物料输送解决方案的提供者

高博公司(GORBEL)自1977年在美国纽约州成立以来,便以提供高效、安全、人性化的物料高架输送解决方案而闻名。公司在北美市场拥有极高的市场占有率,其组合式起重机和旋臂起重机等产品深受客户信赖。为了更好地服务亚洲市场,高博(天津)起重设备有限公司于2006年在天津滨海新区成立,成为美国Gorbel International Inc.在中国的首个生产基地。高博起重设备以其卓越的产品性能和优质的客户服务,在工程机械制造、汽车制造、铁路、风能、航空航天等多个领域赢得了广泛赞誉。

4. 高博医疗集团:血液病与肿瘤治疗的创新者

高博医疗集团是一家专注于血液病和肿瘤治疗的医疗机构集团。近年来,集团通过不断开拓创新,实现了地理版图的快速扩张。在北京、广东、上海等地设立了多家以血液病为专科特色的医疗机构,并成立了以肿瘤为特色的上海阿特蒙医院。高博医疗集团拥有一支由国内外权威专家组成的医疗团队,为患者提供个性化的治疗方案和高质量的医疗服务。同时,集团还积极投入科研创新,取得了一系列卓越的临床和科研成果,在国内外学术界产生了广泛影响。

5. 高博职场文化:激发人才潜能的典范

高博公司在职场文化建设方面也取得了显著成效。公司打破了传统的“论资排辈”体系,以技术、人才为导向,为优秀人才提供了广阔的发展空间。中高管通过高管进阶之旅提升综合能力,新生代员工则通过量身定制的管培生项目进行培养。高博还注重提升员工的职场体验,推出了“高博文化平台和福利平台”,打造数字化职场社交新体验。同时,公司倡导“悦生活·享工作be better@GHG”的健康理念,重视员工的身心健康和职业发展。这些举措不仅增强了员工的归属感和幸福感,也为企业的发展注入了源源不断的动力。

Elite公司的发展小趣事

在科技日新月异的今天,Elite始终保持着对新技术和新趋势的敏锐洞察力。公司不断加大研发投入力度,积极探索新技术、新产品和新市场。同时,Elite还注重人才培养和团队建设,为公司未来发展提供有力保障。展望未来,Elite将继续秉承创新、务实、进取的企业精神,致力于成为全球领先的电子科技企业。

请注意,以上故事均为虚构内容,仅供参考。

Elec & Eltek公司的发展小趣事

随着全球对环境保护和可持续发展的重视日益加深,Eltek公司也积极响应这一趋势。在产品研发和生产过程中,Eltek公司始终坚持环保理念,采用环保材料和工艺,减少对环境的影响。同时,Eltek公司还加大了在可再生能源领域的投入力度,积极研发具有更高效率和更低成本的电力电子产品。此外,Eltek公司还积极参与各种环保活动和公益事业,为推动全球可持续发展贡献自己的力量。

以上五个故事虽然是虚构的,但其中所蕴含的发展思路、创新精神和国际化视野是电子行业公司普遍需要关注和借鉴的。希望这些故事能为您提供一些启示和灵感。

富之光(Fujicon)公司的发展小趣事

随着全球化进程的加速,富致科技也积极实施国际化战略。公司不仅在欧洲、北美等地设立了销售和服务网络,还通过参加国际展会、建立海外研发中心等方式,不断提升品牌影响力和市场竞争力。同时,富致科技还注重与全球顶尖企业和研究机构的合作,共同推动PPTC技术的创新与发展。

Future Designs, Inc. (FDI)公司的发展小趣事

随着市场需求的不断变化,FDI不断投入研发,致力于技术创新。他们不仅优化了现有的GUI产品,还将其应用范围扩大到了更多领域,如医疗设备、工业自动化、汽车电子等。同时,FDI还拓展了产品线,推出了光电元件、射频/IF和RFID、编程器、开发系统以及集成电路(IC)等一系列产品。这些创新举措使得FDI在电子行业中的影响力不断扩大,市场份额逐步提升。

E-Mark Inc公司的发展小趣事

DEF公司是一家跨国电子企业,在欧洲和中国都有生产基地。为了提升产品竞争力,DEF公司决定将其中国生产基地的产品进行E-Mark认证。通过跨国合作和技术交流,DEF公司成功地将中国生产的产品提升到符合欧洲标准的水平,并获得了E-Mark认证。这一认证不仅增强了DEF公司产品的市场竞争力,也促进了中欧之间的经贸合作。

问答坊 | AI 解惑

CH372/CH375的Windows驱动程序/动态库

CH372/CH375的Windows驱动程序/动态库…

查看全部问答>

快快乐乐跟我学开关电源设计

转自ourdev,非常好的学习指导,推荐给大家。 “我想DIY开关电源,要具备哪些理论知识、实践技能和工程素质啊?”     “如何从给定的设计规格设计出开关电源?具体步骤是什么?”     “开关电 ...…

查看全部问答>

【视频分享】《AVR单片机十日通》

本帖最后由 paulhyde 于 2014-9-15 03:34 编辑 欣世纪电子阿迪老师单片机系列视频教程之《AVR单片机十日通》 这个是视频概述,粗略介绍该视频教程的内容和特点 $(\'swf_EK9\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'4 ...…

查看全部问答>

到底什么是JTAG呢?

到底什么是JTAG呢? JTAG(Joint Test Action Group)联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别 ...…

查看全部问答>

PCB板子

我这个板子做得怎么样 大家指点指点 …

查看全部问答>

U盘文件无法删除的问题

文件无法删除,粉碎,格式化都试过啦,敬请大家帮忙,我该怎么办?…

查看全部问答>

美国军用品——免充气蜂巢轮胎

轮胎是一项非常巨大的发明,如果没有轮胎,而只是硬梆梆的轱辘,汽车也不会发展到今天。但是日前,一家美国公司却发明了这样一款无需充气的蜂巢轮胎。 它将本来的充气部分用蜂巢结构来代替,这样一来就可以起到与传统轮胎类似的减震作用了。最重要 ...…

查看全部问答>

串口转以太网设计

串口转以太网设计新产品研发申请 LM3S8962评估板…

查看全部问答>

定时器中TACCIE和TAIE 两个允许位有什么区别

定时器中TACCIE和TAIE 两个允许位有什么区别…

查看全部问答>