奋斗STM32开发板RTC例程讲解

合集下载

STM32系列MCU硬件实时时钟(RTC)应用笔记说明书

STM32系列MCU硬件实时时钟(RTC)应用笔记说明书

2017年6月Doc ID 018624 Rev 1 [English Rev 5]1/45AN3371应用笔记在 STM32 F0、F2、F3、F4 和 L1 系列MCU 中使用硬件实时时钟(RTC )前言实时时钟 (RTC) 是记录当前时间的计算机时钟。

RTC 不仅应用于个人计算机、服务器和嵌入式系统,几乎所有需要准确计时的电子设备也都会使用。

支持 RTC 的微控制器可用于精密计时器、闹钟、手表、小型电子记事薄以及其它多种设备。

本应用笔记介绍超低功耗中等容量、超低功耗大容量、F0、F2和 F4 系列器件微控制器中嵌入式实时时钟 (RTC) 控制器的特性,以及将 RTC 用于日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用时所需的配置步骤。

本应用笔记提供了含有配置信息的示例,有助于您快速准确地针对日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用配置 RTC 。

注:所有示例和说明均基于 STM32L1xx 、STM32F0xx 、STM32F2xx 、STM32F4xx 和STM32F3xx 固件库,以及 STM32L1xx (RM0038)、STM32F0xx (RM0091)、STM32F2xx (RM0033)、STM32F4xx (RM0090)、STM32F37x (RM0313) 和 STM32F30x(RM0316) 的参考手册。

本文提到的STM32 指超低功耗中等容量、超低功耗大容量、F0、F2 和 F4 系列器件。

超低功耗中等 (ULPM) 容量器件包括 STM32L151xx 和 STM32L152xx 微控制器,Flash 容量在 64 KB 到 128 KB 之间。

超低功耗大 (ULPH) 容量器件包括 STM32L151xx 、STM32L152xx 和 STM32L162xx 微控制器,Flash 容量为 384 KB 。

F2 系列器件包括 STM32F205xx 、STM32F207xx 、STM32F215xx 和 STM32F217xx 微控制器。

STM32_RTC简介及程序

STM32_RTC简介及程序

stm32——RTC实时时钟一、关于时间2038年问题在计算机应用上,2038年问题可能会导致某些软件在2038年无法正常工作。

所有使用UNIX时间表示时间的程序都将将受其影响,因为它们以自1970年1月1日经过的秒数(忽略闰秒)来表示时间。

这种时间表示法在类Unix(Unix-like)操作系统上是一个标准,并会影响以其C编程语言开发给其他大部份操作系统使用的软件。

在大部份的32位操作系统上,此“time_t”数据模式使用一个有正负号的32位元整数(signedint32)存储计算的秒数。

也就是说最大可以计数的秒数为 2^31次方可以算得:2^31/3600/24/365 ≈ 68年所以依照此“time_t”标准,在此格式能被表示的最后时间是2038年1月19日03:14:07,星期二(UTC)。

超过此一瞬间,时间将会被掩盖(wrap around)且在内部被表示为一个负数,并造成程序无法工作,因为它们无法将此时间识别为2038年,而可能会依个别实作而跳回1970年或1901年。

对于PC机来说,时间开始于1980年1月1日,并以无正负符号的32位整数的形式按秒递增,这与UNIX时间非常类似。

可以算得:2^32/3600/24/365 ≈ 136年到2116年,这个整数将溢出。

Windows NT使用64位整数来计时。

但是,它使用100纳秒作为增量单位,且时间开始于1601年1月1日,所以NT将遇到2184年问题。

苹果公司声明,Mac在29,940年之前不会出现时间问题!二、RTC使用说明"RTC"是Real Time Clock 的简称,意为实时时钟。

stm32提供了一个秒中断源和一个闹钟中断源,修改计数器的值可以重新设置系统当前的时间和日期。

RTC模块之所以具有实时时钟功能,是因为它内部维持了一个独立的定时器,通过配置,可以让它准确地每秒钟中断一次。

但实际上,RTC就只是一个定时器而已,掉电之后所有信息都会丢失,因此我们需要找一个地方来存储这些信息,于是就找到了备份寄存器。

stm32的RTC时钟程序

stm32的RTC时钟程序
int main(void){ /* System Clocks Configuration */RCC_Configuration(); /* NVIC
rtcfirstconfigure程序是第一次配置rtc如果配置后以后上电不需要重新
stm32的RTC时钟程序
sபைடு நூலகம்m32 的RTC 时钟程序
前些日子做了stm32 RTC 时钟的程序,现在把它记录下来。首先配置RTC,,使用外部时钟32.768KHz。其中配置了秒中断。
RTCFirstConfigure()程序是第一次配置RTC,如果配置后以后上电不需要重新
配置,如果RTC 时钟快了,可内部校准。
void RTCFirstConfigure() //first ini { RCC_BackupResetCmd(ENABLE); RCC_BackupResetCmd(DISABLE); RCC_LSEConfig(RCC_LSE_ON); //enable LSE clock 32.768K while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) {} // Select LSE as RTC Clock Source RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //Enable RTC Clock / RCC_RTCCLKCmd(ENABLE); // Wait for RTC registers synchronization / RTC_WaitForSynchro(); // Wait until last write operation on RTC registers has finished / RTC_WaitForLastTask(); // Enable the RTC Second Interrupt/ RTC_ITConfig(RTC_IT_SEC, ENABLE); RTC_WaitForLastTask(); RTC_SetPrescaler(32767); // RTC period = RTCCLK/RTC_PR = (32.768KHz)/(32767+1)/ RTC_WaitForLastTask(); // BKP_SetRTCCalibrationValue(120); //RTC Calibration RCC_ClearFlag(); } RTCNorConfigure()程序配置完后每次上电都运行的程序

重返STM32之---RTC使用

重返STM32之---RTC使用

重返STM32之---RTC使用STM3f10x的RTC时能涉及到的寄存器有RCC,BKP和RTC这三个大类寄存器;其中RCC主要控制了实时时钟和备份区的电源使能和时钟使能;RTC模块和时钟配置系统的寄存器是在后备区域的(即BKP),通过BKP后备区域来存储RTC配置的数据可以让在系统复位或待机模式下唤醒后RTC里面配置的数据维持不变;为此备份区还得涉及一个寄存器PWR,电源管理寄存器,备份区的写保护位在PWR->CR的第八位。

由于整个RTC都是位于后备区,而且RTC的APB1总线和内核的APB1总线是独立的,所以在系统复位和唤醒时,RTC和BKP的那些时钟不用从新配置;他们只受Backup domain software reset这个位和系统完全掉电的影响。

所以呢;RTC只要有备用电池,它可以完全独立工作。

如图一和图二所示图一图二大家要清楚f10x系列的RTC算不上一个真正意义上的RTC,它只是一个计数器,精度上难免差强人意,所以设计要注意是否满足计时要求。

如果是要实现实时时间以上所有的寄存器都要有相应设置,如果只用秒中断,那么只需要设置RCC和RTC的寄存器就可以了。

以下以实现实时时钟为例讲解初始化过程。

检测后备区是否已有有效标记BKP->DR1 != 0x5050;//(DR1 TO DR42)库函数BKP_ReadBackupRegister(BKP_DR1) != 0x5050;开启电源管理和备份区时钟(RCC->APB1ENR |=1APB1ENR |=1取消备份去写保护(PWR->CR |=1复位后备区所有寄存器RCC->BDCR |=1BDCR &=~(1开启外部32k晶振RCC->BDCR |=132k晶振是否正常工作库函数while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET);选择32k为RTC时钟并使能RTC库函数等待RTC操作和同步完成库函数使能秒中断库函数RTC_ITConfig(RTC_IT_SEC, ENABLE);;配置RTC允许配置//set time---库函数BKP_WriteBackupRegister(BKP_DR1, 0X5050); 如果时钟已被设置过(RTC。

STM32开发板基础教程(十)RTC初探

STM32开发板基础教程(十)RTC初探

STM32开发板基础教程(十)- RTC初探STM32的RTC实际是一个独立的定时器。

下面将介绍如何使用RTC,第一次涉及到振源的问题。

首先介绍一下STM32使用的各种振源,共有三种:HSE:外置晶振HSI:内置RC振荡LSE:外置RTC振荡(32768居多)APB1 和 APB2 是经过PLL以后的振荡源。

STM32启动,首先使用的HSI振荡,在确认HSE振荡可用的情况下,才可以转而使用HSE,当HSE出现问题,STM32可自动切换回HSI振荡,维持工作。

LSE振荡则是专门供RTC使用。

LSE晶振需要特别注意。

STM32非常奇怪,要求使用 6p负载的晶振,但市面买到的时钟晶振,绝大多是是12.5pF的,算是一个不小的bug,要是买6pF的晶振,配10pF的谐振电容。

下面介绍RTC驱动过程。

第一件事情,配置时钟。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR, ENABLE);注意,配置的是什么?不是RTC,是电源管理和BKP备份器的时钟。

用于备份模式下。

即系统掉电了,BKP和RTC还能继续工作,RTC继续计时。

那么RTC的时钟呢?前面提到,RTC的时钟,一般用LSE。

第二件事情,初始化RTC// RTC configvoid RTC_configuration(){//Open the BKPPWR_BackupAccessCmd(ENABLE);BKP_DeInit();//RTC use the LSE ClockRCC_LSEConfig(RCC_LSE_ON); //RCC打开了LSE时钟//Wait LSE Readywhile(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET); //等待LSE 就绪,一般来说,如果谐振不对,就会死在这里。

实际代码请慎重RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //RTC使用时钟,可以使用LSE,也可以使用HSI,也可以使用HSE/128RCC_RTCCLKCmd(ENABLE); //RTC的时钟开启RTC_WaitForSynchro(); //RTC等待同步,RTC_WaitForLastTask(); //这个代码在RTC中常常出现,类似于等待就绪的含义// Interrupt Each SecondRTC_ITConfig(RTC_IT_SEC, ENABLE); //RTC开中断,RTC中断有三种,秒中断,闹钟中断,溢出中断,很明显他们的作用。

奋斗STM32开发板串口1中断例程详解及实验手册

奋斗STM32开发板串口1中断例程详解及实验手册

淘宝店铺:
8
奋斗版 STM32 开发板例程详解———串口 1 中断实验

应答起始位。发送和接收由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置 位时,分别为其产生时钟。每个功能块的详细资料如下给出。 图2 字长设置
单字节通信
清零TXE 位总是通过对数据寄存器的写操作来完成的。TXE 位由硬件来设置,它表明: ● 数据已经从TDR 移送到移位寄存器,数据发送已经开始 ● TDR 寄存器被清空 ● 下一个数据可以被写进USART_DR 寄存器而不会覆盖先前的数据如果TXEIE 位被设置,此 标志将产生一个中断。如果此时USART 正在发送数据,对USART_DR 寄存器的写操作把数据 存进TDR 寄存器,并在当前传输结束时把该数据复制进移位寄存器。如果此时USART 没有在 发送数据,处于空闲状态,对USART_DR 寄存器的写操作直接把数据放进移位寄存器,数据 传输开始,TXE 位立即被置起。当一帧发送完成时(停止位发送后),TC 位被置起,并且 如果USART_CR1 寄存器中的TCIE 位被置起时,中断产生。先读一下USART_SR 寄存器,再写 一下USART_DR 寄存器,可以完成对TC 位的清零。 注意: TC 位也可以通过对它软件写0 来清除。此清零方式只在多缓冲器通信模式 下推荐使用。
断开符号
淘宝店铺:
10
奋斗版 STM32 开发板例程详解———串口 1 中断实验

置位SBK位可发送一个断开符号。断开帧长度取决M位(见图166)。如果SBK位被置1,在完成 当前数据发送后,将在TX线上发送一个断开符号。断开字符发送完成时(在断开符号的停止 位时)SBK被硬件复位。USART在最后一个断开帧的结束处插入一逻辑1 位,以保证能识别下 一帧的起始位。 注意:如果在开始发送断开帧之前,软件又复位了SBK 位,断开符号将不被发送。如果要发 送两个连续的断开帧,SBK 位应该在前一个断开符号的停止位之后置起。

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤以下是使用STM32单片机的RTC时钟的步骤:1.初始化RTC模块:首先,需要在RCC寄存器中使能RTC和LSE(Low-Speed External)晶振模块。

然后,配置RTC的时钟源和预分频器,选择合适的时钟频率。

2.配置RTC时间和日期:通过设置RTC的寄存器来配置当前时间和日期。

需要设置秒、分钟、小时、星期、日期、月份和年份,确保其具有正确的值。

3.启动RTC时钟:设置RTC的控制寄存器,使其开始工作。

可以选择启用或禁用闹钟功能,设置闹钟的时间和日期。

4.读取RTC数据:可以随时读取RTC的时间和日期数据。

读取数据后,可以进行各种计算和处理,如计算两个时间之间的差异、比较时间等。

5.处理RTC中断:可以设置RTC中断来触发一些操作,如闹钟触发时执行一些任务。

需要配置NVIC(Nested Vector Interrupt Controller)中断向量表,使能相应的中断。

6.备份和恢复RTC数据:RTC模块提供了备份寄存器,可以用来存储额外的信息。

可以使用一些特殊的寄存器,如BKP (Backup)寄存器或CPU的系统寄存器来备份和恢复数据。

7.断电维持能力:RTC模块的一个关键特性是其断电维持能力。

即使在断电情况下,RTC模块中的数据仍然能够保持。

可以通过电池供电电路来提供必要的电力。

8.节能模式:可以利用RTC模块的节能模式来降低功耗。

可以选择性地关闭RTC模块的不需要的功能,以减少功耗。

需要注意的是,具体的步骤可能会因芯片型号和开发工具的不同而有所差异。

因此,在使用STM32单片机的RTC时钟之前,需查阅相关的技术文档和参考手册,以了解具体操作步骤和寄存器配置。

以上是使用STM32单片机的RTC时钟的基本步骤。

在实际应用中,可以根据具体需求对RTC进行更多的配置和使用。

STM32学习笔记之—RTC

STM32学习笔记之—RTC

STM32学习笔记之—RTC写这篇学习笔记的时候距上一篇笔记间隔的时间不短了,期间有网友关心询问为什么不更新文章,主要是这一段时间工作太忙了没有闲暇时间做下来学习,工作是重要的事情,不能把饭碗丢了啊o(∩_∩)o…,好了废话少说切入正题。

既然我们要使用RTC就要先对它有个大致的了解,知己知彼才能百战不殆嘛!STM32内部RTC功能非常实用,它的供电和时钟是独立于内核的,可以说是STM32内部独立的外设模块,有加上RTC内部寄存器不受系统复位掉电的影响,我们可以才用外部电池供电和32768表振晶体来实现真正RTC(实时时钟)功能。

的这里引用手册里一段概述“RTC由两个主要部分组成。

第一部分(APB1接口)用来和APB1总线相连。

此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。

APB1接口以APB1总线时钟为时钟,用来与APB1总线接口。

另一部分(RTC核)由一系列可编程计数器组成,分成两个主要模块。

第一个模块是RTC的预分频模块,它可编程产生最长为1秒的RTC时间基准TR_CLK。

RTC的预分频模块包含了一个20位的可编程分频器(RTC预分频器)。

在每个TR_CLK周期中,如果在RTC_CR 寄存器中设置了相应允许位,则RTC产生一个中断(秒中断)。

第2个模块是一个32位的可编程的计数器,它可被初始化为当前的系统时间。

系统时间以TR_CLK速度增长并与存储在RTC_ALR寄存器中的可编程的时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,则比较匹配时将产生一个闹钟中断。

”对于第一次实用RTC的时候我们要对它进行配置一番,现在大致说一下(代码是通过调用RTC_Config函数来实现的):1. 打开电源管理和备份寄存器时钟,提到备份寄存器这里要说一下,引用手册--“备份寄存器是10个16位的寄存器,可用来存储20个字节的用户应用程序数据。

他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。

基于STM32的RTC实时时钟说明书

基于STM32的RTC实时时钟说明书

RTC实时时钟说明书
一:工作原理
STM32芯片中内置RTC时钟,当对RTC进行初始化后,便可以像电子钟一样运行,通过读取RTC对应的寄存器,可以获知年月日、时分秒信息。

有关RTC的说明可参考《STM32中文参考资料》。

二:实验现象及操作
程序下载后,有以下两种情况。

●如果芯片第一次初始化RTC,则程序将写入HEX生成的时间信息到芯片RTC时钟中,
然后读出时钟信息。

通过数码管显示。

●如果不是第一次初始化RTC,则程序将读取RTC对应寄存器的值,以时间信息显示
在数码管上。

如果开发板上有放入3V的小电池,则即使掉电,RTC时钟依然在走。

程序刚下载,数码管显示的数据为时-分-秒。

K1键,则显示年月日,左边四位为年份,最右边两位为日期。

其它两位为月份。

K2键,数码管继续显示时-分-秒。

stm32 rtc用法

stm32 rtc用法

stm32 rtc用法STM32是一款功能强大的微控制器系列,RTC(Real Time Clock)是其中一个重要的功能模块。

RTC模块为嵌入式设备提供了高精度的实时时钟功能,能够在断电后依然保持时间的准确性。

本篇文章将详细介绍STM32 RTC的使用方法,一步一步回答相关问题。

第一步:使用前的准备在开始使用STM32 RTC之前,需要对RTC模块进行一些准备工作。

首先,在Keil或者其他集成开发环境(IDE)中,需要将RTC作为外设来进行配置。

其次,需要对RTC外设的时钟进行配置,通常可以选择外部晶体振荡或者内部LSI振荡作为时钟源。

最后,还需要配置RTC的预分频器和计数器,以满足实际应用的需求。

第二步:初始化RTC模块在进行RTC模块的初始化之前,需要先对RTC外设进行使能。

通过启用RCC_AHB1ENR或RCC_APB1ENR寄存器中的RTCEN位,可以使能RTC外设。

接着,可以通过RCC_CSR寄存器中的备份域访问位(BDCR寄存器)来对RTC 模块进行初始化。

在初始化RTC模块时,可以设置时钟源、预分频器和计数器的初值,以及其他一些参数,如是否使能闹钟功能等。

第三步:设置RTC时间在RTC模块初始化完成后,可以通过写入RTC_TR和RTC_DR寄存器来设置RTC的时间。

其中,RTC_TR寄存器用于设置小时、分钟和秒钟的值,RTC_DR寄存器用于设置年、月和日期的值。

需要注意的是,写入RTC_TR和RTC_DR寄存器的时候,应该先禁用RTC写保护,然后再进行写操作。

完成时间设置后,可以重新启用RTC写保护。

第四步:读取RTC时间除了设置RTC时间外,还可以通过读取RTC_TR和RTC_DR寄存器来获取当前的RTC时间。

读取RTC时间的时候,同样需要先禁用RTC写保护,然后再进行读取操作。

完成读取后,需要重新启用RTC写保护。

第五步:使用闹钟功能RTC模块还支持闹钟功能,可以通过设置RTC_ALRMxR(x为1、2或3)寄存器来设置闹钟的时间和触发方式。

STM32例程之RTC

STM32例程之RTC

STM32例程之RTC1设计要求对开发板上STM32处理器的RTC模块进行操作。

RTC模块的当前时间通过串口传送给PC机的超级终端显示,若RTC模块还未设置时间则通过超级终端进行设置。

RTC秒中断每发生一次,发光二极管LED1闪烁一次。

2 硬件电路设计在开发板上STM32F10x处理器的VBAT引脚接+3V钮扣电池,PC6引脚接LED1,晶振、USART等均已连接。

该应用实例不需要额外电路设计,只需将用一根RS232串行通讯线将开发板的COM0口(CN11连接器)与PC机的串口相连即可。

3 软件程序设计根据设计要求,软件需实现以下任务:(1) 系统启动后检查RTC是否已设置。

由于RTC在BKP区域,当Vdd掉电之后可由后备电源提供电源,当后备电源连接到针脚VBAT上时,RTC的设置不会由于外部电源的断开而丢失。

在本例中写一个值到BKP_DR1中以标示RTC是否已配置,在启动之后程序检查BKP_DR1的值。

(2) 若BKP_DR1的值不正确:(BKP_DR1的值有误或者由于是第一次运行值还未写进去),则需要配置时间并且询问用户调整时间。

(3) 若BKP_DR1的值正确,则意味着RTC已配置,此时将在超级终端上显示时间。

(4) 在RTC秒中断发生时,连接到PC.06 的LED1灯每秒闪烁一次。

整个工程包含3个源文件:STM32F10x.s、stm32f10x_it.c和main.c,其中STM32F10x.s为启动代码,所有中断服务子程序均在stm32f10x_it.c中,其它函数则在main.c中。

下面分别介绍相关的函数,具体程序清单见参考程序。

函数RTC_IRQHandler用于处理秒中断事件,每次秒中断令LED1闪烁一次,在每次遇到23:59:59时将时钟回零。

函数RTC_Configuration用于配置RTC模块。

函数USART_Scanf用于从PC超级终端中获取数字值,Time_Regulate 利用函数USART_Scanf从超级终端获取新的RTC时间值,函数Time_Adjust则利用函数USART_Scanf 设置新的RTC时间。

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤
STM32RTC使用步骤:
打开PWR时钟和Backup区数据访问
若使用外部低速时钟(LSE),打开LSE并等待起振
选择和打开RTC时钟,等待时钟同步
配置时间格式,分频系数等
根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块
根据需要配置和打开中断,其中
RTC Alarm ——EXTI line 17
RTC tamper and TImestamps——EXTI line 19
RTC wakeup——EXTI line 20
下面的代码配置日期,时间,当前时间设置为15年05月31日,星期日(7),15:50:40,打开闹钟A和唤醒中断,每一秒钟来一次中断,15:50:45秒产生闹钟中断,用串口打印相应的信息。

代码:
void RTC_Config(void)
{
RTC_TImeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
RTC_InitTypeDef RTC_InitStructure;
RTC_AlarmTypeDef RTC_AlarmStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_BackupResetCmd(ENABLE);
RCC_BackupResetCmd(DISABLE);
RCC_LSEConfig(RCC_LSE_ON);。

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤

STM32单片机RTC时钟的使用方法及步骤一、配置RTC模块时钟源RTC模块的时钟源可以选择外部低速晶振(LSE)或者低速内部时钟(LSI)。

通过以下步骤配置RTC时钟源:1.使能外部低速晶振(LSE)或者低速内部时钟(LSI)。

例如,如果使用外部低速晶振,则需要使能相应的GPIO端口,并配置为晶振模式。

2.配置RCC时钟控制寄存器(RCC_CR)和时钟配置寄存器(RCC_CSR)。

二、使能RTC模块时钟1.使能PWR模块时钟和备份寄存器访问。

RCC_APB1ENR,=(1<<28);RCC_APB1ENR,=(1<<27);2.校验并关闭RTC模块。

RCC->BDCR,=RCC_BDCR_RTCEN;PWR->CR,=PWR_CR_DBP;if ((RCC->BDCR & RCC_BDCR_RTCEN) == 0)RCC->BDCR,=RCC_BDCR_RTCEN;3.配置RTC时钟预分频器和提供给RTC的时钟源。

RTC->PRER ,= rtc_prescaler_value << RTC_PRER_PREDIV_S_Pos;RTC->PRER ,= 127 << RTC_PRER_PREDIV_A_Pos;RTC->CR&=~RTC_CR_FMT;三、配置RTC模块时间和日期1.关闭RTC时钟写保护功能。

RTC->WPR=0xCA;RTC->WPR=0x53;RTC->ISR,=RTC_ISR_INIT;while((RTC->ISR & RTC_ISR_INITF) == 0);2.配置RTC的时间和日期寄存器。

RTC->TR ,= (uint32_t)((hours / 10) << RTC_TR_Hours10_Pos);RTC->TR ,= (uint32_t)((hours % 10) << RTC_TR_Hours1_Pos);RTC->TR ,= (uint32_t)((minutes / 10) <<RTC_TR_Minutes10_Pos);RTC->TR ,= (uint32_t)((minutes % 10) <<RTC_TR_Minutes1_Pos);RTC->TR ,= (uint32_t)((seconds / 10) <<RTC_TR_Seconds10_Pos);RTC->TR ,= (uint32_t)((seconds % 10) <<RTC_TR_Seconds1_Pos);RTC->DR ,= (uint32_t)((year / 10) << RTC_DR_YT_Pos);RTC->DR ,= (uint32_t)((year % 10) << RTC_DR_YU_Pos);RTC->DR ,= (uint32_t)((month / 10) << RTC_DR_MT_Pos);RTC->DR ,= (uint32_t)((month % 10) << RTC_DR_MU_Pos);RTC->DR ,= (uint32_t)((day / 10) << RTC_DR_DT_Pos);RTC->DR ,= (uint32_t)((day % 10) << RTC_DR_DU_Pos);3.开启RTC时钟写保护功能。

奋斗版STM32开发板基于uCosII 2.86 ucgui3.90的RTC例程实验手册new

奋斗版STM32开发板基于uCosII 2.86 ucgui3.90的RTC例程实验手册new

奋斗版STM32开发板基于uCosII 2.86 uCGUI3.90的RTC实验
适用平台:适用于奋斗版STM32开发板MINI和奋斗版STM32开发板V2、V2.1、V3、MINI 测试工具软件:串口助手SSCOM3.2
实验内容:开发板上电后,板上的TFT模块会有实时时钟显示,此时可以通过串口助手SSCOM3.2发出指令,设置实时时钟。

也可以通过TFT上的界面,利用触摸屏来设置实时时钟,通过这个实验,可以学习ucosII的任务建立,及任务调度,事件同步以及基于ucgui 的界面设计等内容。

本例程共建立了5个任务,分别是主任务,串口COM1通信任务,RTC 秒更新任务,触摸屏任务, ucgui界面显示任务。

运行MDK3.50开发环境,打开STM32奋斗板-RTC-ucos ucgui工程文件
编译后,在OBJFLASH目录下生成HEX类型文件,通过ISP或者JTAG将HEX文件下载到开发板中。

在PC端运行SSCOM软件,设置如下图
给开发板重新上电或者复位,根据TFT模块显示的界面,可以对RTC时钟进行设置。

设置界面如下。

同时也可以通过串口助手设置实时时钟。

命令格式如下: [AA][66]【年+月+日+时+分+秒+星期】[CC 33 C3 3C]
参数说明:所有参数均为单子节。

举例:[AA][66][0A 01 16 16 04 30 05][CC 33 C3 3C];
设置时间10 年1 月22 日22 点4 分48 秒星期五
实验步骤完成。

实验三 RTC例程

实验三  RTC例程

实验三 RTC例程一、实验目的RTC实时时钟的应用和串口通信的应用二、实验内容板子加电后,通过串口1可以设置初始时间及显示实时时间,该实验学习了RTC资源软件的编制及流程。

三、实验仪器、设备计算机、开发板、keil软件四、硬件设计五、软件程序设计根据任务要求,程序内容主要包括:1. 初始化串口1,用于输入和输出。

2. RTC初始化。

3. 间隔时间将RTC时间通过串口1发送出去。

整个工程包含4类源文件:FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。

stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。

stm32f10x_RTC.c ST公司的标准库,包含了关于对于RTC设置的函数。

stm32f10x_bkp.c ST公司的标准库,包含了备份寄存器有关的函数。

stm32f10x_pwr.c ST公司的标准库,包含了电源控制有关的函数。

stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。

Misc.c ST公司的标准库,包含了关于中断设置的函数。

下面介绍主函数main.cRCC_Configuration(void)用于配置系统时钟设置,及外设时钟使能。

NVIC_Configuration函数用于配置中断源,本实验中用到了RTC秒中断。

GPIO_Configuration函数用于配置PB5口线,作为每秒控制LED亮灭的控制线。

Usart1_Init函数用于配置串口1,设置了通信速率等。

Clock_ini函数用于对上电后RTC的状态进行判别。

并作出相应的处理。

Time_Show函数用于间隔一秒通过串口显示实时时钟。

0x00015180时,说明经过23:59:59到了00:00:00,重新复位计数值,串口显示为00:00:00如下:下载完成并打开串口调试工具后重启开发板,串口调试工具中会显示如下信息:RTC not yet configured....RTC configured....==============Time Settings=====================================Please Set Hours输入初始时间(时分秒):RTC not yet configured....RTC configured....==============Time Settings=====================================Please Set Hours: 11Please Set Minutes: 12Please Set Seconds: 32然后就显示如下:若直接出现RTC不需要配置的情况,是因为RTC之前已经被设置过,开发板带有纽扣电池,会将之前设置的数据进行保留,就会出现直接进入时间显示,而不需要设置的情况。

STM32-实时时钟-RTC

STM32-实时时钟-RTC

STM32-实时时钟(RTC)STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核(ST's product portfolio contains a comprehensive range of microcontrollers, from robust, low-cost 8-bit MCUs up to 32-bit ARM-based Cortex®-M0 and M0+, Cortex®-M3, Cortex®-M4 Flash microcontrollers with a great choice of peripherals. ST has also extended this range to include an ultra-low-power MCU platform) 。

实时时钟(RTC)是一个专用于保持时间的计时元素。

在许多的应用中,特别是在需要执行精确定时操作的应用,RTC是非常有用的工具。

除了钟表这类应用的例子外还包括洗衣机、医药柜、数据记录仪等。

RTC基本上是一个定时计数器,但和MCU的其他定时器不同的是,它更精确一些。

在此之前文章中,我们探讨了STM32定时器,但他们对PWM生成、时基和其它波形相关任务的应用程序是有用的。

那些都不适合于精确的计时功能。

在大多数的8位MCU中,像普通的PIC和AVR,并有没有内置RTC模块,所以当我们需要一个板载的精确计时器件时,只能使用类似常见的DS1302或PCF8563的专用RTC 芯片。

这些芯片还需要一些额外的电路、布线以及电路板空间。

但是,目前大多数先进的微控制器都集成了设计人员可以想到的每一个可能的硬件。

这仅取决于设计者决定使用现代微控制器的哪个资源,来满足特定的设计目标。

制造用于满足应用特定需求的MCU的时代已经过去了,在设计中使用并涉及多个元件的时代也已经过去了。

奋斗STM32开发板RTC例程讲解

奋斗STM32开发板RTC例程讲解

RTC实时时钟例程实验平台:奋斗版STM32开发板MINI、V2、V2.1、V3、V5实验内容:板子加电后,通过串口1可以设置初始时间及显示实时时间, 该实验学习了RTC资源软件的编制及流程。

预先需要掌握的知识1 RTC介绍实时时钟是一个独立的定时器。

RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。

修改计数器的值可以重新设置系统当前的时间和日期。

RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。

系统复位后,禁止访问后备寄存器和RTC,防止对后备区域(BKP)的意外写操作。

执行以下操作使能对后备寄存器和RTC的访问:● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位来使能电源和后备接口时钟● 设置寄存器PWR_CR的DBP位使能对后备寄存器和RTC的访问。

2 RTC主要特征● 可编程的预分频系数:分频系数最高为1048576。

● 32位的可编程计数器,可用于较长时间段的测量。

● 2个单独的时钟:用于APB1接口的PCLK1和RTC时钟(此时的RTC时钟必须小于PCLK1时钟的四分之一以上)● 可以选择以下三种RTC的时钟源:─ HSE时钟除以128─ LSE振荡器时钟─ LSI振荡器时钟● 2种独立的复位类型:─ APB1接口由系统复位─ RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位。

● 3个专门的可屏蔽中断:─ 闹钟中断,用来产生一个软件可编程的闹钟中断。

─ 秒中断,用来产生一个可编程的周期性中断信号(最长可达1秒)。

● 溢出中断,检测内部可编程计数器溢出并回转为0的状态。

3 RTC功能描述3.1 概述RTC由两个主要部分组成(参见下图)。

第一部分(APB1接口)用来和APB1总线相连。

此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。

APB1接口由APB1总线时钟驱动,用来与APB1总线接口。

(七)STM32的RTC简单操作

(七)STM32的RTC简单操作

(七)STM32的RTC简单操作************************************************************************简单说明:*1:RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域中。

其断电时靠备份电源供电可继续维持其功能。

所以RTC 的使⽤同时涉及到BKP(备份寄存器)和PWR(电源控制),还需对它们进⾏配置。

*2:由于RTC之前可能已配置(不是第⼀次使⽤),它断电时若有备份电源时,其仍在⼯作,若如此,我们上电后的程序就要考虑是否还要重新配置,若重新配置,之前的就会“灰飞烟灭”;所以,当我们是第⼀次使⽤或没有备份时,我们就配置RTC,若之前已配置,我们就不调⽤,直接使⽤。

在本例中写⼀个值到BKP_DR1中以标⽰RTC是否已配置,在启动之后程序检查BKP_DR1的值。

(1)若BKP_DR1的值不正确:(BKP_DR1的值有误或者由于是第⼀次运⾏值还未写进去),则需要配置RTC(2) 若BKP_DR1的值正确,则意味着RTC已配置.1.⾸先,需要⽤到BKP和PWR,则当然要使能其时钟咯。

因为RTC的⼀些设置是保存在后备域中的,so,操作RTC的设置寄存器前,要打开后备域模块中的写保护功能。

调⽤函数PWR_BackupAccessCmd(ENABLE);2.接着,我们使⽤LSE作为RTC的时钟,则需要进⾏相应时钟的配置;配置完后就可以开启RTC时钟;开启后,还需等待APB1时钟与RTC时钟同步(调⽤RTC_WaitForSynchro())才能读写RTC寄存器;3.我们对RTC进⾏写⼊操作之前,都要检查命令有没有完成,调⽤RTC_WaitForLastTas()即可;我们要对寄存器写⼊哪些值呢?分频数、操作中断等。

4.因为我们要在BKP中加⼊RTC校验功能,所以还需调⽤函数BKP_TamperPinCmd(DISABLE)失能侵⼊检测功能。

STM32F4 第19讲 RTC实时时钟程序讲解-M4

STM32F4  第19讲 RTC实时时钟程序讲解-M4
④ 初始化RTC(同步/异步分频系数和时钟格式):RTC_Init (); ⑤ 设置时间:RTC_SetTime (); ⑥设置日期:RTC_SetDate();
✓ RTC原理
RTC闹钟配置一般步骤
① RTC已经初始化好相关参数。 ② 关闭闹钟:RTC_AlarmCmd(RTC_Alarm_A,DISABLE); ③ 配置闹钟参数:RTC_SetAlarm(); ④ 开启闹钟:RTC_AlarmCmd(RTC_Alarm_A,EABLE); ⑤ 开启配置闹钟中断:
RTC_SetWakeUpCounter(); ① 使能WakeUp : RTC_WakeUpCmd( ENABLE); ② 开启配置闹钟中断:
RTC_ITConfig(); EXTI_Init(); NVIC_Init(); ⑤编写中断服务函数: RTC_WKUP_IRQHandler();
✓ RTC原理 讲解RTC实时时钟实验程序。
✓ RTC原理
RTC日历配置一般步骤
① 使能PWR时钟:RCC_APB1PeriphClockCmd(); ② 使能后备寄存器访问: PWR_BackupAccessCmd(); ③ 配置RTC时钟源,使能RTC时钟:
RCC_RTCCLKConfig(); RCC_RTCCLKCmd(); 如果使用LSE,要打开LSE:RCC_LSEConfig(RCC_LSE_ON);
uint32_t RTC_GetAlarmSubSecond(uint32_t RTC_Alarm);
✓ RTC原理
RTC周期唤醒相关函数
void RTC_WakeUpClockConfig(uint32_t RTC_WakeUpClock); void RTC_SetWakeUpCounter(uint32_t RTC_WakeUpCounter); uint32_t RTC_GetWakeUpCounter(void); RTC_WakeUpCmd(DISABLE);//关闭WAKE UP
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RTC实时时钟例程实验平台:奋斗版STM32开发板MINI、V2、V2.1、V3、V5实验内容:板子加电后,通过串口1可以设置初始时间及显示实时时间, 该实验学习了RTC资源软件的编制及流程。

预先需要掌握的知识1 RTC介绍实时时钟是一个独立的定时器。

RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。

修改计数器的值可以重新设置系统当前的时间和日期。

RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。

系统复位后,禁止访问后备寄存器和RTC,防止对后备区域(BKP)的意外写操作。

执行以下操作使能对后备寄存器和RTC的访问:● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位来使能电源和后备接口时钟● 设置寄存器PWR_CR的DBP位使能对后备寄存器和RTC的访问。

2 RTC主要特征● 可编程的预分频系数:分频系数最高为1048576。

● 32位的可编程计数器,可用于较长时间段的测量。

● 2个单独的时钟:用于APB1接口的PCLK1和RTC时钟(此时的RTC时钟必须小于PCLK1时钟的四分之一以上)● 可以选择以下三种RTC的时钟源:─ HSE时钟除以128─ LSE振荡器时钟─ LSI振荡器时钟● 2种独立的复位类型:─ APB1接口由系统复位─ RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位。

● 3个专门的可屏蔽中断:─ 闹钟中断,用来产生一个软件可编程的闹钟中断。

─ 秒中断,用来产生一个可编程的周期性中断信号(最长可达1秒)。

● 溢出中断,检测内部可编程计数器溢出并回转为0的状态。

3 RTC功能描述3.1 概述RTC由两个主要部分组成(参见下图)。

第一部分(APB1接口)用来和APB1总线相连。

此单元还包含一组16位寄存器,可通过APB1总线对其进行读写操作。

APB1接口由APB1总线时钟驱动,用来与APB1总线接口。

另一部分(RTC核心)由一组可编程计数器组成,分成两个主要模块。

第一个模块是RTC的预分频模块,它可编程产生最长为1秒的RTC时间基准TR_CLK。

RTC 的预分频模块包含了一个20位的可编程分频器(RTC预分频器)。

如果在RTC_CR寄存器中设置了相应的允许位,则在每个TR_CLK周期中RTC产生一个中断(秒中断)。

第二个模块是一个32位的可编程计数器,可被初始化为当前的系统时间。

系统时间按TR_CLK周期累加并与存储在RTC_ALR寄存器中的可编程时间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断3.2 复位过程除了RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器外,所有的系统寄存器都由系统复位或电源复位进行异步复位。

RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器仅能通过备份域复位信号复位。

3.3 读RTC寄存器RTC核完全独立于RTC APB1接口。

软件通过APB1接口访问RTC的预分频值、计数器值和闹钟值。

但是,相关的可读寄存器只在与RTC APB1时钟进行重新同步的RTC时钟的上升沿被更新。

RTC标志也是如此的。

这意味着,如果APB1接口刚刚被开启之后,在第一次的内部寄存器更新之前,从APB1上读出RTC寄存器的第一个值可能被破坏了(通常读到0)。

下述几种情况下能够发生这种情形:● 发生系统复位或电源复位● 系统刚从待机模式唤醒。

● 系统刚从停机模式唤醒。

所有以上情况中,APB1接口被禁止时(复位、无时钟或断电)RTC核仍保持运行状态。

因此,若在读取RTC寄存器曾经被禁止的RTC APB1接口,软件首先须等待RTC_CRL寄存器中的RSF 位(寄存器同步标志)被硬件置1。

注: RTC的 APB1接口不受WFI和WFE等低功耗模式的影响。

3.4配置RTC寄存器必须设置RTC_CRL寄存器中的CNF位,使RTC进入配置模式后,才能写入RTC_PRL、RTC_CNT、RTC_ALR寄存器。

另外,对RTC任何寄存器的写操作,都必须在前一次写操作结束后进行。

可以通过查询RTC_CR寄存器中的RTOFF状态位,判断RTC寄存器是否处于更新中。

仅当RTOFF状态位是’1’时,才可以写入RTC 寄存器。

配置过程:1. 查询RTOFF位,直到RTOFF的值变为’1’2. 置CNF值为1,进入配置模式3. 对一个或多个RTC寄存器进行写操作4. 清除CNF标志位,退出配置模式5. 查询RTOFF,直至RTOFF位变为’1’以确认写操作已经完成。

仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK周期。

3.5 RTC标志的设置在每一个RTC核心的时钟周期中,更改RTC计数器之前设置RTC秒标志(SECF)。

在计数器到达0x0000之前的最后一个RTC时钟周期中,设置RTC溢出标志(OWF)。

在计数器的值到达闹钟寄存器的值加1(RTC_ALR+1)之前的RTC时钟周期中,设置RTC_Alarm和RTC闹钟标志(ALRF)。

对RTC闹钟的写操作必须使用下述过程之一与RTC秒标志同步:●使用RTC闹钟中断,并在中断处理程序中修改RTC闹钟和/或RTC计数器。

●等待RTC控制寄存器中的SECF位被设置,再更改RTC闹钟和/或RTC计数器。

4 RTC寄存器描述4.1 RTC控制寄存器高位(RTC_CRH)地址偏移量:0x00复位值:0x00004.2 RTC控制寄存器低位(RTC_CRL)偏移地址:0x04复位值:0x0020RTC的功能由这个控制寄存器控制。

当正在前一个写操作还未完成时节),不能写RTC_CR寄存器。

注:1 任何标志位都将保持挂起状态,直到适当的RTC_CR请求位被软件复位,表示所请求的中断已经被接受。

2 在复位时禁止所有中断,无挂起的中断请求,可以对RTC寄存器进行写操作。

3 当APB1时钟不运行时,OWF、ALRF、SECF和RSF位不被更新。

4 OWF、ALRF、SECF和RSF位只能由硬件置位,由软件来清零。

5 若ALRF=1且ALRIE=1,则允许产生RTC全局中断。

如果在EXTI控制器中允许产生EXTI线 17中断,则允许产生RTC全局中断和RTC闹钟中断。

6 若ALRF=1,如果在EXTI控制器中设置了EXTI线 17的中断模式,则允许产生RTC闹钟中断;如果在EXTI控制器中设置了EXTI线 17的事件模式,则这条线上会产生一个脉冲(不会产生RTC闹钟中断)。

4.3 RTC预分频装载寄存器(RTC_PRLH/RTC_PRLL)预分频装载寄存器用来保存RTC预分频器的周期计数值。

它们受RTC_CR寄存器的RTOFF 位保护,仅当RTOFF值为’1’时允许进行写操作。

RTC预分频装载寄存器高位(RTC_PRLH)偏移地址:0x08复位值:0x0000RTC预分频装载寄存器低位(RTC_PRLL)偏移地址:0x0C复位值:0x8000注: 如果输入时钟频率是32.768kHz(f RTCCLK),这个寄存器中写入7FFFh可获得周期为1秒钟的信号。

4.4 RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL)在TR_CLK的每个周期里,RTC预分频器中计数器的值都会被重新设置为RTC_PRL寄存器的值。

用户可通过读取RTC_DIV寄存器,以获得预分频计数器的当前值,而不停止分频计数器的工作,从而获得精确的时间测量。

此寄存器是只读寄存器,其值在RTC_PRL或RTC_CNT寄存器中的值发生改变后,由硬件重新装载。

RTC预分频器余数寄存器高位(RTC_DIVH) 偏移地址:0x10复位值:0x0000RTC预分频器余数寄存器低位(RTC_DIVL)偏移地址:0x14复位值:0x80004.5 RTC计数器寄存器 (RTC_CNTH / RTC_CNTL)RTC核有一个32位可编程的计数器,可通过两个16位的寄存器访问。

计数器以预分频器产生的TR_CLK时间基准为参考进行计数。

RTC_CNT寄存器用来存放计数器的计数值。

他们受RTC_CR上的位RTOFF写保护,仅当RTOFF值为’1’时,允许写操作。

在高或低寄存器(RTC_CNTH或RTC_CNTL)上的写操作,能够直接装载到相应的可编程计数器,并且重新装载RTC预分频器。

当进行读操作时,直接返回计数器内的计数值(系统时间)。

RTC计数器寄存器高位(RTC_CNTH)偏移地址:0x18复位值:0x0000RTC计数器寄存器低位(RTC_CNTL)偏移地址:0x1C复位值:0x00004.6 RTC闹钟寄存器(RTC_ALRH/RTC_ALRL)当可编程计数器的值与RTC_ALR中的32位值相等时,即触发一个闹钟事件,并且产生RTC 闹钟中断。

此寄存器受RTC_CR寄存器里的RTOFF位写保护,仅当RTOFF值为’1’时,允许写操作。

RTC闹钟寄存器高位(RTC_ALRH)偏移地址:0x20复位值:0xFFFFRTC闹钟寄存器低位(RTC_ALRL)偏移地址:0x24复位值:0xFFFF1. 应用实例用到的几处需要关注的知识:备份数据寄存器(BKP_DRx):在这个例程用到了采用备份数据寄存器1保存RTC 时钟的配置标志,这个值可以自己设置,本例中采用了16位值A5A5,如果有备份电池在MCU的VBAT脚提供电源,在RTC配置后设置的这个值就会保存。

即使在复位或者掉电的情况下,也会稳定保存住。

在本例中这个值的意义在于上电后判断是否需要重新进行时钟的初始配置。

RTC计数器寄存器 (RTC_CNTH / RTC_CNTL) :这个计数器的值表示了基于0时0分0秒的秒数值,改变它既是改变时间。

1.1. 设计要求板子加电后,通过串口1可配置初始时间并实时输出实时时钟。

1.2 硬件电路设计如下图所示1.3 软件程序设计根据任务要求,程序内容主要包括:1.初始化串口1,用于输入和输出。

2.RTC初始化。

3.间隔时间将RTC时间通过串口1发送出去。

整个工程包含4类源文件:ASM--startup_stm32f10x_hd.s 由于奋斗板采用的是STM32F103大存储器芯片,因此采用STM32标准库自带的大存储器芯片启动代码,这个文件已经配置好了初始状态,以及中断向量表。

可以直接在工程里使用,如果你在以后的应用中采用了中存储器或者小存储器STM32芯片,可以将启动代码换为startup_stm32f10x_md.s 或者startup_stm32f10x_ld.s。

FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。

相关文档
最新文档