对于STM中RTC部分
1:首先明白其时钟来源,时钟源于3个部分,HSE/28;LSE(32.768KHz);LSI(40KHz);时钟经过可编程预分频器(20bits)RTC_PRLH/RTC_PRLL RTC_DIVH/RTC_DIVL,产生最长时间1S的RTC时间基准TR_CLK,可产生秒中断。TR_CLK周期累加(RTC_CNT计数)并与RTC_ALR(32bits)寄存器比较,若相等则可产生闹钟中断。若RTC_CNT计数溢出,也会产生溢出中断。对RTC的操作,是通过APB1接口,其APB1接口是由APB1总线时钟驱动(P1CLK),用来与APB1总线接口的。
注:预产生中断,必须使能相应的中断位。RTC_CRH(OWIE,ALRIE,SECIE)
2:2个独立的复位类型。
(1):APB1接口由系统复位
(2):RTC核心(分频器,闹钟,计数器)由后备域复位
备份区域有两个专门的复位,只影响备份区域。
复位条件:软件复位,由备份区域控制寄存器(RCC_BDCR)中的BDRST
硬件复位,VDD,及VBAT两者掉电前提下,VDD或者VBAT上电引发复位。
3:3个专门可屏蔽中断
(1)秒中断,最长时间为1S。Ftc_clk=Frtc_clk/(PRL[19:0]+1)
(2)溢出中断,指示内部可编程计数器溢出并到0的状态。
(3)闹钟中断,软件可编程的闹钟中断。
配置RTC寄存器
首先必须等到RTC_OFF为1,表示上一次写RTC寄存器完成;其次将RTC_CRL寄存器中的CNF位置1,表示进入寄存器配置模式。
配置步骤:
1:查询RTC_OFF是否为1,直到RTC_OFF为1。(RTC_OFF为只读位)
2:置CNF位为1,进入配置模式
3:对RTC寄存器进行写/修改操作
4:清除CNF位,退出配置模式
5:查询RTC_OFF标志,直至RTC_OFF为1时表示写入完成。
RTC的标志设置
RTC预分频器余数寄存器(RTC_DIVH/RTC_DIVL)
关键字:STM RTC
引用地址:
STM学习笔记--RTC
推荐阅读最新更新时间:2024-03-16 15:08
【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解
前言: 今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5、串口: 使用USART1 PA9,PA10 知识概括: 通过本篇博客您将学到: STM32CubeMX创建串口例程 HAL库UATR函数库
[单片机]
HAL库教程7:STM32的时钟系统
STM32的时钟系统比较复杂,不像51单片机,可能只有一个时钟。原因:1、外设多,不同的外设有不同的时钟要求;2、功耗原因,速度越快,功耗越大,抗电磁干扰能力越弱。 此处以STM32F405为例,讲一点最常用的知识。其它的型号大同小异。 时钟 含义 特点 HSE 外部高速时钟信号 一般选择外接晶振,最常用的时钟信号。电机驱动板外接12Mhz HSI 内部高速时钟信号 由单片机内部的16MHzRC振荡器生成,成本低,但精度低。默认的系统时钟,但实际使用的场合不多。 PLL 锁相环 由HSE或HSI提供时钟信号,主要用于生成高速系统时钟,STM32F405最高168Mhz,103 72Mhz 4
[单片机]
stm32串口点灯
串口程序: hal.h #ifndef HAL_H #define HAL_H //输出宏定义 //清零 #define LED1_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_8) //置一 #define LED1_ON GPIO_SetBits(GPIOA, GPIO_Pin_8) #define LED2_OFF GPIO_ResetBits(GPIOA, GPIO_Pin_7) #define LED2_ON GPIO_SetBits(GPIOA, GPIO_Pin_7) #define LED3_OFF GPIO_ResetBits(GPIOC, GPIO_Pin_7) #defin
[单片机]
Keil5 + STM32F2xx_StdPeriph_Lib_V1.1.0 建立工程
这个库版本建立工程的步骤要简单了,今天对比了一下,做了个总结: 1.建立目录:建立目录test,并在test下建立子目录testusr,testoutput; 2.准备文件:将库文件LibrariesSTM32F2xx_StdPeriph_Driver下的inc,src两个目录copy到test目录下;在库文件ProjectSTM32F2xx_StdPeriph_Examples下的例程中选择一个模板,比如GPIOIOToggle,将里面的源文件全部拷贝到testusr目录下;将LibrariesCMSISDeviceSTSTM32F2xxSourceTemplatesarm下的启动文件startup_stm32f2xx.
[单片机]
【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API
32.1 初学者重要提示 学习定时器外设推荐从硬件框图开始了解基本的功能特性,然后逐步深入了解各种特性,这种方式方便记忆和以后查阅。 STM32H7的定时器输出100MHz方波是完全没问题。http://forum.armfly.com/forum.php?mod=viewthread&tid=86434 。 STM32H7定时器进出中断的速度能跑到12.5MHz,所有程序在TCM和Flash运行没差别。http://forum.armfly.com/forum.php?mod=viewthread&tid=90836 。 STM32H7的定时器输入捕获可以实现12MHz方波的双边沿捕获,单边沿可以做到24MHz。http
[单片机]
增量式PID的stm32实现,整定过程
首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异。 资料上比较多的是: 还有一种是: 感觉第二种的Kp Ki Kd比较清楚,更好理解,下面介绍的就以第二种来吧。(比例、积分、微分三个环节的作用这里就详细展开,百度会有很多) 硬件部分: 控制系统的控制对象是4个空心杯直流电机,电机带光电编码器,可以反馈转速大小的波形。电机驱动模块是普通的L298N模块。 芯片型号,STM32F103ZET6 软件部分: PWM输出:TIM3,可以直接输出4路不通占空比的PWM波 PWM捕获:STM32除了TIM6 TIM7其余的都有捕获功能,使用TIM1 TIM2 TIM
[单片机]
STM32系统时钟树分析
下面是一个STM32芯片的时钟树图 1、LSI是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。 2、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。这个主要是RTC的时钟源。 3、HSE是高速外部时钟,课接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。我们开发板接的是8M的晶振。HSE也可以直接作为系统时钟或者PLL输入。 4、HSI是高速内部时钟,RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。 5、PLL为锁相环倍频输出。STM32F4有两个PLL: (1)主PLL由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。 第一个
[单片机]
STM32单片机半主机模式的应用
在keil中编程时常会遇到__use_no_semihosting_swi的警告,这时你就是进入了半主机模式。 在嵌入式的编程中你是避免不了使用printf、fopen、fclose等函数的但是因为嵌入式的程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这 个声明,使程序遇到这些文件操作函数时不停在此中断处,具体操作如下,将下列程序加入你的工程中: #pragmaimport(__use_no_semihosting_swi)#pragmaimport(_main_redirection)constchar__stdin_name[150]
[单片机]