历史上的今天
返回首页

历史上的今天

今天是:2025年01月11日(星期六)

2021年01月11日 | STM32F10x_RTC秒中断

2021-01-11 来源:eefocus

https://yunpan.cn/cBbpu3gIGK38a  访问密码 05da

 

STM32F10x_RTC秒中断实例源代码工程:

https://yunpan.cn/cBbpPnhYbXR9x  访问密码 561f

 

STM32F1资料:

https://yunpan.cn/crBUdUGdYKam2  访问密码 ca90

 

Ⅲ、原理描述

    以笔者个人学习经历来说,想要掌握其真正原理,最好还是查看参考手册(现在有很多都翻译为中文了),里面模块的框图,从框图中大概就可以看到该模块有些什么功能及其工作的原理。

 

RTC框图:


 

从上面系统框图来分析“RTC秒中断”的原理:

1、RTC时钟源,总共有三类:

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

本文实例代码是:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);

使用“RCC_RTCCLKSource_HSE_Div128”作为时钟源(高速时钟源),也就是外部高速时钟的128分频,也就是每秒8M/128(62500)个脉冲;

 

当然,我们也可以选择另外两个时钟源,也就是使用低速时钟源,一般应用在RTC闹钟可RTC日历等都使用低速时钟源。

 

2、RTC分频:

本文实例代码是:RTC_SetPrescaler(62500);

这个值是和上面对应的,因为我们这里是实现真正的1秒钟中断一次。

 

3、RTC中断:

RTC中断有三种:

RTC_IT_SEC秒中断

RTC_IT_ALR闹钟中断

RTC_IT_OW(计数)溢出中断

 

本文实例是:RTC_ITConfig(RTC_IT_SEC, ENABLE);

使能RTC_IT_SEC秒中断。

 

再次强调:

这里的“秒中断”是概念上的秒中断,它的中断间隔时间是根据你选择的时钟源和分频值决定的,并非真正的1秒钟中断一次。

 

我们可以试着将源代码中的分频值该62500的一半31250,可以看得出来,秒中断的间隔时间为0.5秒(请自行修改实验测试)。

 

 

Ⅳ、源代码分析

笔者以F1标准外设库(同时也建议初学者使用官方的标准外设库)为基础建立的工程,主要以库的方式来讲述(若您的F1芯片与提供工程不一样,可微信回复“修改型号”)。

 

下面将讲述关于“RTC秒中断”重要的、容易弄错的几点:

1.RCC时钟源


该函数位于bsp.c文件下面;

RCC是很多初学者,甚至已经工作的朋友容易遗漏的地方,有很多朋友觉得它使用的外设不正常,很大部分是没有配置RCC导致的。

 

重点注意:

A.外设RCC时钟的配置要在其外设初始化的前面;

 

B.匹配对应时钟。

比如:RCC_APB2外设不要配置在RCC_APB1时钟里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译通过,但这是错误的代码】

 

2. RTC秒中断配置


该函数位于rtc.c文件下面;

该函数请结合参考手册(框图和寄存器)理解。

 

注意4点:

A.使能后备区域:PWR_BackupAccessCmd(ENABLE);

从系统框图可以看见RTC有阴影部分,其实这部分就是后备区域。因此,需要使能,这也是为什么上面需要配置RCC时钟的原因。

 

B.选择RTC时钟源:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);

在原理描述中说了,RTC时钟源有三种:

RCC_RTCCLKSource_LSE

RCC_RTCCLKSource_LSI

RCC_RTCCLKSource_HSE_Div128

 

可以在源代码中查看其参数,也是有3中可以选择。

 

C.使能RTC闹钟中断:RTC_ITConfig(RTC_IT_SEC,ENABLE);

RTC有三类中断:

RTC_IT_SEC秒中断

RTC_IT_ALR闹钟中断

RTC_IT_OW(计数)溢出中断

 

我提供的拓展功能“RTC闹钟”就是使用闹钟中断,可以下载实例工程查看源代码。

 

D.RTC分频:RTC_SetPrescaler(62500);

我们是为了得到真正的1秒钟中断一次,所以这里的值是62500 = 8M/128,这样才能刚好1秒中断一次。

 

3. NVIC配置


该函数位于bsp.c文件下面;

我们要中断,就需要配置NVIC(中断控制器),为其分配优先级。

 

很多人觉得自己的配置没问题,但程序就是不进入中断,原因可能就在这里。因此,NVIC这里也是容易忽略的地方。

 

4. RTC中断


该函数位于stm32f10x_it.c文件下面;

 

这里需要注意,RTC有三类中断,但入口都是这个函数,因此,需要在函数体里面分辨是哪一个中断进入了该函数。

 

注意1点:

清除中断标志位:RTC_ClearITPendingBit(RTC_IT_SEC);

 

有的中断标志位清除方法可能有几种方法,比如USART接收中断,只要读取接收值就可以清除(请看USART1_IRQHandler函数)

 

可能有人觉得自己的程序老是字在中断函数里面,原因可能就在于没有清除中断标志位。


推荐阅读

史海拾趣

三环(CCTC)公司的发展小趣事

三环(CCTC)公司自1970年成立以来,便致力于电子基础材料、电子元件和通信器件的研发与生产。在创立初期,公司面临着技术落后和资金短缺的困境,但通过不懈的努力和持续的研发投入,逐渐在电子行业中崭露头角。公司积极引进国外先进技术和设备,同时培养了一支高素质的研发团队,为后续的发展奠定了坚实的基础。

3L Electronic Corporation公司的发展小趣事

面对日新月异的电子科技,3L Electronic Corporation始终坚持以技术创新为核心竞争力。公司投入大量研发资源,不断推出具有市场竞争力的新产品。从传统的电子零组件到智能电子设备,再到物联网解决方案,3L的产品线不断升级,满足了市场的多样化需求。

CIPS公司的发展小趣事

随着CIPS系统的不断发展壮大,其在行业内的地位和影响力也逐渐提升。多家银行和金融机构因积极运用CIPS标准收发器推动跨境人民币业务发展而荣获奖项,这是对CIPS系统及其运营机构的高度认可。这些荣誉和奖项不仅彰显了CIPS在行业内的领先地位,也为其未来的发展奠定了坚实基础。

AEC Design公司的发展小趣事
随着公司规模的扩大和市场地位的提升,AEC Design公司开始注重品牌建设。通过精心策划的品牌推广活动、优质的客户服务以及完善的售后服务体系,公司的品牌形象逐渐深入人心。消费者对公司的信任度和忠诚度不断提高,为公司的长期发展奠定了坚实基础。
Coleman Cable Inc公司的发展小趣事

品质一直是Coleman Cable的生命线。公司建立了严格的质量控制体系,从原材料采购、生产过程到成品检验,每一个环节都严格把关。这种对品质的执着追求,使得Coleman Cable的产品在市场上享有良好的声誉。同时,公司还积极听取客户反馈,不断改进产品和服务,赢得了客户的信赖和忠诚。

Antex公司的发展小趣事

Antex公司始于1917年,当时它主要从事锻件的制造和销售。这一时期的Antex,凭借着对锻造技术的深入研究和不断创新,逐渐在电子行业中崭露头角。公司注重产品质量和客户需求,通过设计、锻造、机械加工、装配的一站式服务,赢得了客户的信赖。

问答坊 | AI 解惑

内窥镜控制板

内窥镜控制板 模拟、数字摄像头 录像640×480 30帧 直接驱动液晶屏 拍照 QQ:1163454792 szleedoo@sina.com 欢迎一起探讨…

查看全部问答>

FPGA程序有破解的方法吗

请问存放在EPCS里边的FPGA程序有被破解的危险吗?有没有什么有效的方法防止程序被破解?…

查看全部问答>

求解

我是做ASP.NET的一个程序员,1年多的经验,对做B/S和C/S的项目都还行,现在公司老总要求我去做嵌入式开发,但是我对嵌入式软件开发一点都不熟悉,求前辈们指条路走(本人想学嵌入式开发),希望能得到正解,谢谢…

查看全部问答>

串行数据测试发包方法的讨论

在串行数据测试中,经常会使用专门的测试夹具把待测试信号引入示波器中测量和分析,这时,待测试的串行信号链路并不在正常工作状态(即正常的业务数据流模式),而是工作在测试模式,待测试芯片的该串行链路的发送端必须强制发送出测试数据包,然后 ...…

查看全部问答>

有人要打样FBGA的PCB吗?

看到坛子里有很多,FBGA相关的电路和protel, 有谁想过去打样PCB,供大家一起学习呢。  …

查看全部问答>

【51征文】奖品快递单号

【51征文】活动的奖品已经寄出,请大家注意查收!以下单号均为圆通快递!anqi90   6123900454sjl2001     6123900489 wisology    6123900453zgjxncytl   613477694205210324kw    6134776941jishua ...…

查看全部问答>

求输入端电流钳制设计方法

求电流钳制方法,就是说如果正常工作在1ma的情况下,电流可以正常通过,但是如果电流超过规定的电流限度(以5ma为例),会被钳制在5ma。…

查看全部问答>

DAC8408F TI的有什么芯片可以替换?

本帖最后由 dontium 于 2015-1-23 13:12 编辑 请教TI的模拟电子方面的专家 DAC8408F TI的有什么芯片可以替换?   DAC8408F为4路8位COMS D/A转换芯片 …

查看全部问答>

msp430一个特殊的系列——MSP430AFE模拟前端

对于MSP430有一个特殊的系列,他们叫做AFE(Analog Front End),就是如题目所说的模拟前端。 那么这个模拟前端到底有何特点呢? 多达3 个具有差分可编程增益放大器(PGA) 输入的24 位三角积分模数(A/D) 转换器 对于430MCU来将,这个外设可能过于 ...…

查看全部问答>

ARM架构核心板三种Form Factor之比较

ARM架构核心板三种Form Factor之比较                                               ...…

查看全部问答>