Finder自学stm32笔记之电源时钟

合集下载

stm32时钟概念

stm32时钟概念

STM32时钟概念1. 引言STM32是一款由意法半导体(STMicroelectronics)推出的32位单片机系列,广泛应用于各种嵌入式系统中。

在STM32的开发过程中,时钟是一个非常重要的概念,它影响着系统的性能、功耗和稳定性。

本文将详细介绍STM32时钟概念中的关键概念,包括时钟树、主时钟源、系统时钟等,并解释其定义、重要性和应用。

2. 时钟树2.1 定义时钟树是指将外部晶振或者其他主时钟源通过分频器、倍频器等电路分配给各个模块和外设的一系列信号链路。

在STM32中,时钟树起到了提供精确时间基准以及同步各个模块工作的作用。

2.2 重要性时钟树在STM32系统中扮演着至关重要的角色。

首先,它为整个系统提供了统一的时间基准,保证了各个模块之间工作的协调性和稳定性。

其次,通过合理设计时钟树可以提高系统的灵活性和可扩展性,使得不同模块可以根据需求选择不同的时钟源。

此外,时钟树还可以通过合理的分频和倍频设置来控制系统的功耗。

2.3 应用在STM32开发中,我们经常需要配置时钟树来满足不同系统需求。

下面是一些常见的应用场景:•配置系统时钟源:可以选择外部晶振、内部RC振荡器或者其他外设作为系统时钟源,根据实际需求进行配置。

•分频和倍频设置:可以通过分频器和倍频器来调整系统时钟频率,从而满足不同模块对时钟精度和速度的要求。

•使能外设时钟:每个外设都有自己的时钟使能位,需要根据实际使用情况使能或禁用相应的外设时钟。

3. 主时钟源3.1 定义主时钟源是指供给STM32系统整体工作的主要时钟信号源。

在STM32中,主要有以下几种主时钟源:•外部晶振(HSE):通过将外部晶振连接到MCU上提供稳定的高精度时钟信号。

•内部RC振荡器(HSI):MCU内部集成了一个低功耗高精度的RC振荡器。

•PLL锁相环:通过对主时钟源进行倍频和分频,可以得到更高频率的时钟信号。

3.2 重要性主时钟源是整个STM32系统的基础,它直接影响着系统的性能和稳定性。

stm32时钟概念

stm32时钟概念

stm32时钟概念(实用版)目录1.STM32 时钟概念概述2.STM32 时钟的分类3.STM32 时钟的配置方法4.STM32 时钟的应用实例5.总结正文一、STM32 时钟概念概述STM32 时钟是指基于 STM32 单片机的时钟系统,STM32 单片机是一款高性能、低功耗的微控制器,内部集成了多种时钟源,可为系统提供多样化的时钟信号。

时钟系统是 STM32 单片机的重要组成部分,对系统的稳定性和准确性具有重要影响。

二、STM32 时钟的分类STM32 时钟可分为以下几类:1.高速时钟(HCLK):高速时钟是 STM32 单片机内最快的时钟,通常用于处理高速信号,如高速串行通信、音频信号处理等。

2.高速低功耗时钟(HCLK_LP):高速低功耗时钟是高速时钟的低功耗版本,可在降低功耗的同时保持较高的时钟频率。

3.中速时钟(MCLK):中速时钟是 STM32 单片机内部时钟信号的默认选择,适用于大多数应用场景。

4.低速时钟(LCLK):低速时钟是 STM32 单片机内部最慢的时钟信号,适用于对时钟频率要求不高的场景,如按键扫描等。

5.实时时钟(RTC):实时时钟是 STM32 单片机内部的实时时钟模块,可用于提供年月日时分秒等时间信息。

三、STM32 时钟的配置方法STM32 时钟的配置方法主要包括以下步骤:1.配置时钟源:根据应用需求选择合适的时钟源,如高速时钟源(HSE)或高速低功耗时钟源(HSI)等。

2.配置时钟预分频:根据实际需求,对时钟源进行预分频,以得到所需的时钟频率。

3.配置时钟倍频:对预分频后的时钟信号进行倍频,以进一步提高时钟频率。

4.配置时钟输出:将配置好的时钟信号输出到相应的时钟引脚。

5.配置时钟使能:使能所需的时钟信号。

四、STM32 时钟的应用实例以下是一个基于 STM32F103 系列的实时时钟(RTC)实验例程:1.首先,配置 RTC 时钟源为高速时钟源(HSE)。

stm32单片机时钟

stm32单片机时钟

stm32单⽚机时钟stm32 单⽚机时钟学习以及分析1 引⾔:单⽚机(Microcontrollers),采⽤超⼤规模集成电路技术把具有数据处理能⼒的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O⼝和中断系统、定时器/计数器等功能(可能还包括显⽰驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到⼀块硅⽚上构成的⼀个⼩⽽完善的微型计算机系统,在⼯业控制领域⼴泛应⽤。

单⽚机时钟可以说如同⼈的⼼脏那样重要,我们在⼼脏的搏动下进⾏⾃⼰的⽣命活动,同样的单⽚机在时钟下进⾏⾃⼰的控制活动。

2 时钟的分类:单⽚机的时钟分为内部时钟与外部时钟:⼀般⽽⾔,内部时钟集成在芯⽚内部(RC振荡电路),其精度⽐较低;外部时钟,顾名思义,存在于芯⽚外部(晶体或陶瓷谐振器),可以为系统提供精确的时钟。

晶振是给单⽚机提供⼯作信号脉冲的,如图所⽰的为外部晶振,频率为4MHz,我们常⽤的晶振频率为12MHz,单⽚机⼯作时,是⼀条⼀条地从RoM中取指令,然后⼀步⼀步地执⾏。

单⽚机访问⼀次存储器的时间,称之为⼀个机器周期,这是⼀个时间基准。

—个机器周期包括12个时钟周期。

如果⼀个单⽚机选择了12MHz晶振,它的时钟周期是1/12us,它的⼀个机器周期是12×(1/12)us,也就是1us。

有些晶振的频率并数是整数,如:11.0592MHz的晶振。

单⽚机在进⾏串⾏通信时,常⽤的波特率为1200,2400,4800,9600,115200等,为了适应单⽚机的串⼝通讯波特率的计算⽽来的。

⽤11.0592MHz晶振经过相应的分频或者倍频后刚好能够得出⼀个整数的波特率,这样在上位机和下位机的同步⽅⾯⽐较⽅便。

3 stm32的时钟来源这⾥以stm32f1系列的芯⽚为例。

由上⾯可知,系统的时钟来源有内部时钟与外部时钟,详细的来说stm32f1有五个时钟源:HSI(⾼速内部时钟)HSE(⾼速外部时钟)LSI(低速内部时钟)LSE(低速外部时钟)PLL(锁相环倍频输出)每⼀个时钟都可以独⽴的开启与关闭。

STM32F051学习开发笔记——声控电子钟

STM32F051学习开发笔记——声控电子钟

STM32F051学习开发笔记——声控电子钟作者介绍:以前主要是从事STM8和51的开发,用过STM32S10和A T91SAM的32位机。

很喜欢玩单片机。

出来两年,以前在家电方案公司做家电,现在在一家车载电子公司写软件。

学习开发的原由:看到高性价比的新产品想学点以后备用;看了STM32F051资料后发现它以前的STM32S10功能上多个日历和触摸功能, 触摸要重新制板,有些麻烦,所以做了电子钟的项目;以前用ST的MCU做的项目比较多入手有优势;感谢ST发了块开发板,DIY就容易多了。

第一步上MUC跑起来1)找工程看例子拿到板后,我收集了大最关于STM32F051的资料。

我习惯的去找已建好的工程(我觉得把间时浪费在建功能和设置编程环境太浪费了),刚开始怎么也联不上,一直以为ST-LINK驱动问题,后来发现我用IAR版本太底,下了个V6402就好了。

STM32F051有两个开发板,一个是针对我手上MB1034B简单的,它对应的工程文件是"stm32f0discovery_fw",但里面的例子太少了,就几个灯闪一闪那种,后来直接就用"stm32f0_stdperiph_lib"文件搞了个例子来做测试,虽然例子多,但很多地方不兼容,按键、LED、就连系统电压都不一样!ST做得有点不到位。

不过这样也好,能在测试过程有点可学的,我就选了里面的"STM32F0xx_StdPeriph_Templates"来建的工程。

要用什么功能就去'STM32F0xx_StdPeriph_Examples'里面找,有时候找不到还可去STM32S10的例子中找,程序复制过来小改就可用。

2)点LED"STM32F0xx_StdPeriph_Templates"的工程里面只要改"stm320518_eval.h" LED的几个定义,删除LCD显示就可直接调用STM_EV AL函数,很顺利的把那两个灯点亮。

自己整理STM32学习笔记(关于时钟)

自己整理STM32学习笔记(关于时钟)

【走向高考】2015高考历史一轮总复习第五单元第23讲世界资本主义经济政策的调整课件技能提升新人教版必修2“曲线图”题的解题技巧1.首先应读懂图表和文字。

图表分析题是以图表或文字反映的信息为依据,看不懂资料,也就失去答题的前提。

因此,图表内容的阅读和理解是正确答题的首要条件。

2.读图表时,最好带着题中的问题去读,注意提取与试题有关的重要信息。

这样一方面有利于对图表的理解,另一方面也可减少答题时重复看图表的时间。

比如下题中题干提示的“新政前后”与四个选项的分析角度,说明只需分析1933年前后的大的变化趋势,不必细究曲线的小波动。

3.适当采用排除法解决问题。

如下图所示的曲线反映罗斯福新政前后的( )A.农产品价格的波动B.社会失业率的起伏C.银行倒闭数量的变化D.公共工程投资额的增减[解析] 本题以数据曲线图为问题情境,考查学生读取数据信息、归纳分析问题的能力。

本题全面考查了罗斯福新政的措施。

1929年世界经济危机爆发后,银行大量破产,1933年罗斯福上台后,下令银行暂时休业整顿,新银行得到联邦储备委员会的保障,恢复了银行信用,故C项正确。

A、B、D三项是对数据曲线的错误解读,危机发生后,农产品价格下降,而曲线表达的是上升,故A项错误;罗斯福上台后“以工代赈”,失业率有所下降,但不可能像图示那样,接近于零,故B项错误;新政时期公共工程投资会大幅增加,故1933年以后的曲线应该是上升,所以D项错误。

[答案] C下图为美国劳动力构成变化。

造成美国劳动力构成变化的原因是( )A.互联网时代,非体力劳动人员急剧增加,体力劳动人员急剧减少B.经济危机导致大量体力劳动者失业C.出于“冷战”的需要,美国大力发展科技,非体力劳动者人员急剧增加D.第三次科技革命使得第一、二产业比重下降,第三产业比重上升[解析] 由上图可知,1945年以后体力劳动人员比重下降,非体力劳动人员比重上升。

这种现象正是由于第三次科技革命的兴起引起的。

stm32如何配置时钟

stm32如何配置时钟

学习STM32笔记2 如何配置时钟学习STM32笔记2 如何配置时钟/*************************************************************该程序目的是用于测试核心板回来后是否能正常工作。

包括两个按键、两个LED现实。

按键为PC4、PC5,LED为PA0\PA1。

LED为低电平时点亮。

按键为低电平时触发。

************************************************************/#i nclude "stm32f10x_lib.h"void RCC_Configuration(void);//设置系统主时钟void GPIO_Configuration(void);//设置邋邋IO参数void NVIC_Configuration(void);//设置中断表地址void delay(void);//延时函数int main(void){#ifdef DEBUGdebug();#endifRCC_Configuration();NVIC_Configuration();GPIO_Configuration();while (1){delay();//设置指定的数据端口位GPIO_SetBits(GPIOA,GPIO_Pin_0);//设置指定的数据端口位delay();GPIO_ResetBits(GPIOA,GPIO_Pin_0);//清除指定的数据端口位GPIO_SetBits(GPIOA,GPIO_Pin_1);delay();GPIO_ResetBits(GPIOA,GPIO_Pin_1);delay();/*********************************************使用setbits 与resetbits 是比较简单,其实还是可以使用其它函数。

STM32入门教程--系统时钟配置

STM32入门教程--系统时钟配置

STM32 系统时钟配置一、STM32的时钟系统时钟是什么?时钟通常是振荡器(如晶振)产生的特定频率的方波信号,时钟周期是时钟频率的倒数,时钟频率1MHz时钟周期为1/1000000=1us。

时钟周期是MCU处理指令的最小时间单元,每个程序指令都需要若干个时钟周期,MCU的时钟频率越快,完成一个指令的时间就越短,速度就越快。

时钟是MCU运行的基础,好比MCU的脉搏,是MCU性能的重要参数。

每个MCU 都是在某个特定的时钟频率下进行工作的,如C51单片机时钟频率为12MHz,而STM32F103 的系统时钟频率是72MHz。

STM32的时钟系统STM32时钟频率较高,时钟越快功耗越大,同时抗电磁干扰能力也会越弱。

而且STM32外设非常多,而通常外设是不需要像系统时钟那么高的频率的,比如看门狗和RTC 只需要几十K的时钟即可。

另外实际使用的时候通常只会用到有限的几个外设,STM32可以只给需要启动的外设分配时钟,以此来降低功耗。

由此可看出STM32 的时钟系统较为复杂,它采用了多个时钟源的方法来解决这些问题。

STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。

①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。

④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源而独立使用,HSI高速内部时钟 HSE高速外部时钟 PLL锁相环时钟这三个经过分频或者倍频作为系统时钟来使用基本时钟源(图中绿色箭头指出):(1)HSI高速内部时钟,RC振荡器,8MHz。

(2)HSE高速外部时钟,石英/陶瓷谐振器,8MHz。

(3)LSI低速内部时钟,RC振荡器,40kHz。

学习STM32笔记2如何配置时钟

学习STM32笔记2如何配置时钟

学习STM32笔记2 如何配置时钟*学习STM32笔记2 如何配置时钟原创笔记2009-09-20 19:56 阅读116 评论0字号:大中小/*************************************************************该程序目的是用于测试核心板回来后是否能正常工作。

包括两个按键、两个LED现实。

按键为PC4、PC5,LED为PA0\PA1。

LED为低电平时点亮。

按键为低电平时触发。

************************************************************/#i nclude "stm32f10x_lib.h"void RCC_Configuration(void);//设置系统主时钟void GPIO_Configuration(void);//设置邋邋IO参数void NVIC_Configuration(void);//设置中断表地址void delay(void);//延时函数int main(void){#ifdef DEBUGdebug();#endifRCC_Configuration();NVIC_Configuration();GPIO_Configuration();while (1){delay();//设置指定的数据端口位GPIO_SetBits(GPIOA,GPIO_Pin_0);//设置指定的数据端口位delay();GPIO_ResetBits(GPIOA,GPIO_Pin_0);//清除指定的数据端口位GPIO_SetBits(GPIOA,GPIO_Pin_1);delay();GPIO_ResetBits(GPIOA,GPIO_Pin_1);delay();/*********************************************使用setbits 与resetbits 是比较简单,其实还是可以使用其它函数。

stm32时钟概念

stm32时钟概念

stm32时钟概念STMicroelectronics的STM32系列是一系列基于ARM Cortex-M 内核的微控制器(MCU)。

时钟系统在STM32芯片中是一个关键的概念,因为它驱动了芯片内部的各种功能模块,包括CPU、外设、总线等。

以下是与STM32时钟相关的一些基本概念:1. 系统时钟(SYSCLK): SYSCLK是STM32中的主时钟,它驱动CPU和内存等核心模块。

其频率由时钟源和分频器的组合决定。

2. 时钟源: STM32芯片通常支持多个时钟源,包括内部RC振荡器、外部晶体振荡器、PLL(相位锁定环)等。

选择适当的时钟源取决于应用的要求,例如需要更高的稳定性或更低的功耗。

3. PLL(Phase-Locked Loop):PLL是一种用于产生高稳定性时钟信号的电路。

通过将一个参考时钟信号与一个可调节的倍频器相锁定,PLL可以生成一个高频率的时钟信号。

4. AHB、APB总线:在STM32中,系统总线被分为高性能总线(AHB)和低速外设总线(APB)。

这两个总线有各自的时钟域,因此可以独立配置时钟。

这种分级的结构有助于提高系统的性能和灵活性。

5. 时钟树:时钟树描述了时钟系统的层次结构,显示了时钟源如何通过PLL和分频器传递到各个模块。

了解时钟树结构对于调整系统时钟和解决时钟相关问题非常有用。

6. 时钟配置寄存器: STM32芯片具有一系列寄存器,允许程序员配置时钟系统。

这些寄存器包括RCC寄存器(RCC,Reset and Clock Control)等,通过编程这些寄存器,可以设置各种时钟参数。

7. 低功耗模式时钟: STM32芯片支持不同的低功耗模式,如停机模式、待机模式等。

在这些模式下,可以降低系统的功耗,因此时钟系统在这些模式下的配置也需要考虑。

时钟配置通常是在启动代码或初始化过程中完成的,程序员可以通过修改相应的寄存器来调整时钟设置以满足应用的需求。

对于具体的时钟配置和使用,建议查阅STMicroelectronics提供的芯片手册和相关文档。

STM32电源、时钟及 复位电路

STM32电源、时钟及 复位电路
JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准 JTAG接口。
串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟+数 据)接口。
SWJ调试端口脚表
JTAG连接实现图
启动配置
3.5调试接口
调试接口
硬件调试工具 JTAG或SWD连接器 调试线
SWJ调试端口(serial wire and JTAG)
STM32F10xxx内核集成了串行/JTAG调试接口(SWJDP)。
这是标准的ARM CoreSight调试接口,包括JTAGDP接口(5个引脚)和SW-DP接口(2个引脚)。
用户可以利用PVD对VDD电压与电源控制寄存器(PWR_CR)中的 PLS[2:0]位进行比较来监控电源。
通过设置PVDE位来使能PVD 电源控制/状态寄存器(PWR_CSR)中的PVDO标志用来表明VDD是 高于还是低于PVD的电压阀值。
该事件在内部连接到外部中断的第16线,如果该中断在外部 中断寄存器中是使能的,该事件就会产生中断。
3.1.2 电源管理器
1、上电复位(POR)和掉电复位(PDR) STM32内部有一个完整的上电复位(POR)和掉电复 位(PDR)电路,当供电电压达到2V时系统就能正常 工作。 当VDD/VDDA低于指定的限位电VPOR/VPDR时,系统 保持为复位状态,而无需外部复位电路。
2、可编程电压监测器(PVD)
NRST引脚上的低电平(外部复位) 窗口看门狗计数终止(WWDG复位) 独立看门狗计数终止(IWDG复位) 软件复位(SW复位) 低功耗管理复位
2、电源复位
电源复位
当以下事件中之一发生时,产生电源复位:
上电/掉电复位(POR/PDR复位) 从待机模式中返回

STM32 硬件设计手册学习笔记

STM32 硬件设计手册学习笔记

Stm32硬件设计手册学习笔记
1.时钟系统的学习
STM32的系统时钟主要有3中来源:
A: HSI 内部高速时钟
B: HSE 外部高速时钟
C:PLL PLL时钟
STM32 的二级时钟源:
A: 40KHz 的内部RC (LSI RC)供独立看门狗和RTC唤醒使用B:32.768KHz 低速外部时钟(LSE )RTC 实时时钟
2.HSE的使用
3.时钟安全系统(CSS)
4.boot 控制
5.嵌入式bootloader 模式
通常使用UART1 实现bootloader ,参考手册AN2606
6.调试
7.
PCB设计建议
A:最好采用多层PCB板,分开VSS和VDD ,这样能很好的去耦和屏蔽干扰。

B:基于成本的考虑,对于少层板,主要还是要考虑电源和地的布线
C:布局的出去,将EMI干扰的不同电路分块,主要是,噪声,大电流电路,第电压电路,数字电路要分开。

D:接地和电源:各个功能块的接地要独立,然后汇总在一个接地点,形成的环路面积要尽可能的小
E:去耦:100nF和10uF 的电容并联
F:未使用的IO和未使用的功能块:未使用的时钟,IO单元要置1或者置0,未使用的功能块要禁止掉。

8.。

STM32学习笔记(4)通用定时器基本定时功能

STM32学习笔记(4)通用定时器基本定时功能

STM32学习笔记(4)通⽤定时器基本定时功能STM32学习笔记(4):通⽤定时器基本定时功能1.STM32的Timer简介STM32中⼀共有11个定时器,其中2个⾼级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。

其中系统嘀嗒定时器是前⽂中所描述的SysTick,看门狗定时器以后再详细研究。

今天主要是研究剩下的8个定时器。

其中TIM1和TIM8是能够产⽣3对PWM互补输出的⾼级定时器,常⽤于三相电机的驱动,时钟由APB2的输出产⽣。

TIM2-TIM5是普通定时器,TIM6和TIM7是基本定时器,其时钟由APB1输出产⽣。

由于STM32的TIMER功能太复杂了,所以只能⼀点⼀点的学习。

因此今天就从最简单的开始学习起,也就是TIM2-TIM5普通定时器的定时功能。

2.普通定时器TIM2-TIM52.1时钟来源计数器时钟可以由下列时钟源提供:·内部时钟(CK_INT)·外部时钟模式1:外部输⼊脚(TIx)·外部时钟模式2:外部触发输⼊(ETR)·内部触发输⼊(ITRx):使⽤⼀个定时器作为另⼀个定时器的预分频器,如可以配置⼀个定时器Timer1⽽作为另⼀个定时器Timer2的预分频器。

由于今天的学习是最基本的定时功能,所以采⽤内部时钟。

TIM2-TIM5的时钟不是直接来⾃于APB1,⽽是来⾃于输⼊为APB1的⼀个倍频器。

这个倍频器的作⽤是:当APB1的预分频系数为1时,这个倍频器不起作⽤,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其他数值时(即预分频系数为2、4、8或16),这个倍频器起作⽤,定时器的时钟频率等于APB1的频率的2倍。

APB1的分频在STM32_SYSTICK的学习笔记中有详细描述。

通过倍频器给定时器时钟的好处是:APB1不但要给TIM2-TIM5提供时钟,还要为其他的外设提供时钟;设置这个倍频器可以保证在其他外设使⽤较低时钟频率时,TIM2-TIM5仍然可以得到较⾼的时钟频率。

STM32中的时钟

STM32中的时钟
函数开发忽略此项容)。
外部时钟晶体振荡器最好选择8MHz晶振,无论是库函数,还是Keil默
认配置启动文件时钟配置均是按照外部晶体振荡器8MHz来进行的配置,系
统时钟72MHz,如果采用其他型号的晶体震荡器振还需要自己配置时钟树,
对于新手来说可能存在一定的困难。
STM32中的时钟
下面就以STM32开发板中最常见的STM32F103系列芯片的时钟为例,
介绍一下STM32中的时钟。
时钟作用
说到时钟,你一定会问,这是用来计时的吗?没错,是用来计时的,但这
只是它在STM32中的一项功能而已,下面就为你列出了时钟的具体功能。
计时作用(供给某些计数器统计时间);
控制时序(串口数据的传输,只能一位一位的传输);
CSS时钟安全监测单元当外部时钟意外故障,CSS在短时间内切换到内
部高速时钟使单片机工作不中断
RTCCLK实时时钟时钟源选择选择锁相环倍频器时钟源128分频作为实
时时钟时钟源选择外部低速时钟作为实时时钟时钟源选择内部低俗时钟作为
实时时钟时钟源
MCO时钟输出控制锁相环时钟2分频输出内部低俗时钟输出内部高速时
控制信号(将时钟的上升下降沿作为独特的控制标志)。
STM32时钟模型
STM32内部时钟树
时钟源
时钟源就是产生时钟的电路啦,我们来一起看一下,什幺样的电路可以产
生时钟。
STM32中的时钟源分为以下五种:
低速内部时钟LSI:频率为40kHz;
高速内部时钟HSI:频率为8MHz;
低速外部时钟OSC_32:频率为32.7678kHz;
钟输出系统时钟输出
关于APB1、APB2时钟
STM32单片机外设挂接在APB1、APB2两个桥上,但两个桥允许的始终

快速看懂STM32-电源、时钟、复位电路及 源代码

快速看懂STM32-电源、时钟、复位电路及 源代码

快速看懂STM32-电源、时钟、复位电路及源代码
STM32时钟分析
一、硬件上的连接问题
如果使用内部RC振荡器而不使用外部晶振,请按照如下方法处理:
1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。

2)对于少于100脚的产品,有2种接法:
i)OSC_IN和OSC_OUT分别通过10K电阻接地。

此方法可提高EMC性能。

ii)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出0。

此方法可以减小功耗并(相对上面i)节省2个外部电阻。

对上图的分析如下:
重要的时钟:
PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2之间的关系要弄清楚;
1、HSI:高速内部时钟信号STM32单片机内带的时钟(8M频率)精度较差
2、HSE:高速外部时钟信号精度高来源(1)HSE外部晶体/陶瓷谐振器(晶振)(2)HSE用户外部时钟
3、LSE:低速外部晶体32.768kHz主要提供一个精确的时钟源一般作为RTC时钟使用
在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

①、HSI是高速内部时钟,RC振荡器,频率为8MHz。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

③、LSI是低速内部时钟,RC振荡器,频率为40kHz。

④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。

倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

Stm32 学习笔记1--时钟

Stm32 学习笔记1--时钟

Stm32 学习笔记1—时钟1、5个时钟源HSI、HSE、LSI、LSE、PLLHIS:内部高速时钟HSE:外部高速时钟LSI:内部低速时钟LSE:低速外部时钟PLL:锁相环输出2、AMBA总线AHB:系统总线APB:外设总线,其总APB2为高速外设总线,APB1为低速外设总线外设时钟使能函数:NewState取值:ENABLE或DISABLEvoid RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)void RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph, FunctionalState NewState)系统时钟使能函数:NewState取值:ENABLE或DISABLE需要使用某一或多个外设时需打开相对应的时钟,多个时钟用“|”分隔3、RCC相关寄存器3.1寄存器名称和功能描述①一个32位的时钟控制寄存器(RCC_CR)②一个32位的时钟配置寄存器(RCC_CFGR)③一个32位的时钟中断寄存器(RCC_CIR)④一个32位的APB2外设复位寄存器(RCC_APB2RSTR)⑤一个32位的APB1外设复位寄存器(RCC_APB1RSTR)⑥一个32位的AHB外设时钟使能寄存器(RCC_AHBENR)⑦一个32位的APB2外设时钟使能寄存器(RCC_APB2ENR)⑧一个32位的APB1外设时钟使能寄存器(RCC_APB1ENR)⑨一个32位的备份域控制寄存器(RCC_BDCR)⑩一个32位的控制/状态寄存器(RCC_CSR)3.2结构定义和访问方法typedef struct{vu32 CR;vu32 CFGR;vu32 CIR;vu32 APB2RSTR;vu32 APB1RSTR;vu32 AHBENR;vu32 APB2ENR;vu32 APB1ENR;vu32 BDCR;vu32 CSR;} RCC_TypeDef;#define RCC_BASE (AHBPERIPH_BASE + 0x1000)#ifdef _RCC#define RCC ((RCC_TypeDef *) RCC_BASE)#endif /*_RCC */其中AHBPERIPH_BASE=(u32)0x40020000,那么RCC指向0x400210003.3RCC配置方法:void RCC_Configuration(void){RCC_DeInit();/*RCC复位*/RCC_HSEConfig(RCC_HSE_ON);/*打开外部高速时钟晶振HSE ,Enable HSE */ HSEStartUpStatus = RCC_WaitForHSEStartUp();/*等待直到晶振准备好*/if(HSEStartUpStatus == SUCCESS)/*晶振准备好*/{FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/*使能FLASH半周期访问*/FLASH_SetLatency(FLASH_Latency_2);/*设置代码延时值*//*********************************************************************************************************************************************/ RCC_HCLKConfig(RCC_SYSCLK_Div1);/*置AHB时钟(HCLK), AHB时钟= 系统时钟/1*/RCC_PCLK2Config(RCC_HCLK_Div1); /*高速时钟APB2时钟= HCLK */RCC_PCLK1Config(RCC_HCLK_Div2);/*低速时钟APB1时钟= HCLK / 2 */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/*设置PLL时钟源及倍频系数,外部时钟8M,倍频数9*//*****************************************************************************原型:void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul)*********************************************************************************/RCC_PLLCmd(ENABLE);/*PLL使能*//*等待锁相环输出稳定*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}/* 选择系统时钟源*/RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/****************************************************************************************************************************************************/ /* 返回当前系统时钟源0x00:HSI,0x04:HSE,0x08:PLL */while(RCC_GetSYSCLKSource() != 0x08){}}/* 以后内容设置外部设备时钟使能*/……….}。

STM32学习笔记系统时钟和SysTick定时器

STM32学习笔记系统时钟和SysTick定时器

STM32学习笔记(3):系统时钟和SysTick定时器1.STM32的时钟系统在STM32中,一共有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL(1)HSI是高速内部时钟,RC振荡器,频率为8MHz;(2)HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz;(3)LSI是低速内部时钟,RC振荡器,频率为40KHz;(4)LSE是低速外部时钟,接频率为32.768KHz的石英晶体;(5)PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL 的输入可以接HSI/2、HSE或者HSE/2。

倍频可选择为2 – 16倍,但是其输出频率最大不得超过72MHz。

其中,40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。

另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE的128分频。

STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。

该时钟源只能从PLL端获取,可以选择为1.5分频或者1分频,也就是,当需使用到USB模块时,PLL必须使能,并且时钟配置为48MHz 或72MHz。

另外STM32还可以选择一个时钟信号输出到MCO脚(PA.8)上,可以选择为PLL输出的2分频、HSI、HSE或者系统时钟。

系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。

系统时钟可以选择为PLL输出、HSI、HSE。

系系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各个模块使用,AHB分频器可以选择1、2、4、8、16、64、128、256、512分频,其分频器输出的时钟送给5大模块使用:(1)送给AHB总线、内核、内存和DMA使用的HCLK时钟;(2)通过8分频后送给Cortex的系统定时器时钟;(3)直接送给Cortex的空闲运行时钟FCLK;(4)送给APB1分频器。

STM32时钟配置方法详解

STM32时钟配置方法详解

STM32时钟配置方法详解STM32是意法半导体(STMicroelectronics)公司推出的一系列32位Flash微控制器,被广泛应用于各种嵌入式系统中。

时钟是STM32微控制器的核心部分,正确配置时钟可以确保系统正常工作并达到预期的性能。

本文将详细介绍STM32时钟配置的方法。

1.时钟源:STM32微控制器提供了多个时钟源,包括内部时钟(HSI、LSI)和外部时钟(HSE、LSE)。

其中,HSI(高速内部时钟)是一个高频率(通常为8MHz)的内部RC振荡器,适用于低功耗应用;LSI(低速内部时钟)是一个低频率(通常为40kHz)的内部RC振荡器,用于RTC(实时时钟)模块;HSE(高速外部时钟)是一个外接的高频晶振,用于提供更精确的时钟信号;LSE(低速外部时钟)是一个外接的低频晶振,适用于RTC模块。

2.主频和系统时钟:主频是指CPU的时钟频率,系统时钟是指STM32微控制器的总线时钟,包括AHB(高性能总线)、APB1(低速外设总线)和APB2(高速外设总线)。

在进行STM32时钟配置之前,需要按照以下几个步骤来完成。

1.启用对应的时钟源:根据具体需求,选择合适的时钟源并启用相应的时钟。

可以通过设置RCC_CR寄存器和RCC_APB1ENR/RCC_APB2ENR寄存器来实现。

例如,要使用HSE作为时钟源,需要首先启用HSE时钟。

2.配置时钟分频器:为了使系统时钟不超过芯片规格要求的最大频率,需要对时钟进行分频。

分频器有两个,即AHB分频器和APB分频器。

可以通过设置RCC_CFGR寄存器来实现。

例如,将AHB分频器设置为8,将APB1和APB2分频器分别设置为4,可以将主频分别分频为8MHz、32MHz和64MHz。

3.等待时钟稳定:当启用外部时钟源时,需要等待时钟稳定。

可以通过读取RCC_CR寄存器的特定标志位来判断时钟是否稳定。

4. 配置Flash存储器的延时:根据主频的不同,需要设置Flash存储器的访问延时,以确保正常读写数据。

STM32时钟源的介绍及使用方法——STM32时钟树

STM32时钟源的介绍及使用方法——STM32时钟树

STM32时钟源的介绍及使⽤⽅法——STM32时钟树【温馨提⽰:以下内容均来⾃⽹友的⽆私奉献或书本的摘抄,在此表⽰感谢!】上图是STM32的时钟树,从树上我们可以看到,STM32的时钟有两个来源——内部时钟和外部时钟。

按时钟频率来分,⼜可分为⾼速时钟和低速时钟。

因此STM32的时钟有四个来源:⾼速外部时钟信号(HSE)、低速外部时钟信号(LSE)、⾼速内部时钟信号(HSI)和低速内部时钟信号(LSI)(图中分别⽤蓝⾊的①~④标注)。

①HSE⾼速外部时钟:由外部4~16MHz的晶体或有源晶振提供,通常采⽤8MHz。

②LSI低速外部时钟:外部晶体提供,主要是给实时时钟(RTC),⼀般为32.768kHz。

③HSI⾼速内部时钟:由内部RC振荡器产⽣的8MHz时钟,但不够稳定。

④LSI低速内部时钟:内部RC振荡器产⽣的供给RTC的时钟,频率在30kHz~60kHz之间,通常约40kHz。

时钟在STM32内部最终是供给四⼤块(图中⽤红⾊椭圆圈出):USB的48MHz时钟、系统时钟SYSCLK、实时时钟模块RTC、独⽴看门狗的时钟IWDGCLK。

其中最主要的,也是最⼤头是系统时钟SYSCLK,它可以是内部或外部⾼速时钟直接接过来,也可以内、外部⾼速时钟是PLL倍频后提供的,系统时钟再分别供给Cortex内核、SDIO、AHB总线、DMA、APB1、APB2等。

我们通常是采⽤外部8MHz⾼速时钟(HSE),所以着重说HSE。

我们以前⾯的GPIO上的时钟为例,由ST的Datasheet可知,GPIO是在APB2⾼速外设总线上的,图中绿⾊的线就是时钟的流程,我们⼀步步地来看。

8MHz外部晶体(或晶振)输⼊后,先经过⼀个开关PLLXTPRE(HSE divider for PLL entry),此开关决定对HSE进⾏2分频再输⼊到PLL或直接到PLL。

我们选择不分频。

这样时钟⼜到了第⼆个开关PLLSRC(PLL entry clock source),此开关决定PLL的时钟来源,是内部⾼速时钟⼆分频的时钟还是PLLXTPRE的输出。

STM32时钟配置方法详解

STM32时钟配置方法详解

STM32时钟配置方法详解时钟树是STM32微控制器中一系列时钟源和时钟分频器的组成部分。

时钟树包括系统时钟、外设时钟和内核时钟。

系统时钟用于驱动整个微控制器系统的核心,外设时钟用于驱动各种外设,内核时钟用于驱动CPU的运算。

在进行时钟配置之前,首先需要了解系统所需的时钟频率。

在STM32中,系统时钟可以通过多种方式进行配置,例如使用外部晶体、外部时钟、内部RC振荡器或者PLL(锁相环)等方式。

外部晶体是一种常用的时钟源,可以提供高精度的时钟频率。

在使用外部晶体时,首先需要设置PLL的时钟源为外部晶体,并设置PLL输入除频器的分频系数。

然后,再根据系统所需的时钟频率,设置PLL的倍频系数,以得到最终的系统时钟频率。

外部时钟是从外部提供的时钟信号,一般用于测试和调试。

使用外部时钟时,需要设置PLL的时钟源为外部时钟,并设置PLL的倍频系数,以得到所需的系统时钟频率。

内部RC振荡器是一种低成本的时钟源,但是其频率不如外部晶体稳定和精确。

在使用内部RC振荡器时,需要设置PLL的时钟源为内部RC振荡器,并设置PLL的倍频系数,以得到所需的系统时钟频率。

PLL是一种用于产生稳定高频时钟的电路,可以从一个低频时钟源产生一个高频时钟源。

使用PLL时,需要设置其输入时钟源和倍频系数。

系统时钟的分频系数可以通过RCC_CFGR寄存器进行设置。

RCC_CFGR寄存器的各个位域用于配置系统时钟的分频系数,包括分频因子、APB1的分频系数、APB2的分频系数等。

外设时钟是用于驱动外设的时钟,可以由系统时钟分频得到。

外设时钟的分频系数可以通过RCC_CFGR寄存器及各个外设的控制寄存器进行设置。

内核时钟是用于驱动CPU的运算的时钟。

在STM32微控制器中,CPU 时钟可以由系统时钟分频得到,分频系数可以通过RCC_CFGR寄存器和FLASH_ACR寄存器进行设置。

除了上述方法之外,STM32还可以使用时钟配置工具进行时钟配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电源STM32的工作电压(VDD)为2.0~3.6V。

通过内置的电压调节器提供所需的1.8V电源。

当主电源VDD掉电后,通过VBA T脚为实时时钟(RTC)和备份寄存器提供电源。

由上图可知VDDA.VSSA分别是独立给ADC的电源盒电源地。

ADC需要准确的精度因此需要独立的电源供电。

使用电池或其他电源连接到VBAT脚上,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。

以便于RTC、后备区域、一些寄存器工作当然也需要外部振荡器提供时钟,所以也为LSE振荡器供电。

stm32中有上电复位掉电复位电路,可以设置通过设置PVDE位设置PVD阀值,当VDD 电压异常的时候就会复位,可以设置中断。

低功耗模式三种低功耗模式睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)停止模式(所有的时钟都已停止而电压还在供给) :是深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压调节器可运行在正常或低功耗模式。

此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。

在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。

待机模式(1.8V电源关闭):待机模式可实现系统的最低功耗。

该模式是在Cortex-M3深睡眠模式时关闭电压调节器。

整个1.8V供电区域被断电。

PLL、HSI和HSE振荡器也被断电。

SRAM和寄存器内容丢失。

只有备份的寄存器和待机电路维持供电。

前面是三者的详细介绍,初一看看不出有什么区别,我当时都看的晕呼呼地,做笔记时候才发现他们真正的不同。

现在讲解一下。

睡眠模式只是关掉了CM3的内核,外设都在运行包过内部外部时钟、IO口、中断NVIC 等等。

停止模式是进一步的睡眠模式它是关掉了所有的外设时钟,但是仍旧在供电。

待机模式是最低功耗的模式,它连时钟供电全部禁止除了备份的寄存器和待机电路维持供电。

(有待进一步的深入研究并修正)Stm32降低功耗的三种方法:1.低功耗模式2.降低系统时钟3.关掉外设如题降低系统时钟通过对预分频寄存器进行编程,可以降低任意一个系统时钟(SYSCLK、HCLK、PCLK1、PCLK2)的速度。

从而降低功耗。

但是我有疑问就是:如何在系统运行的情况下切换系统时钟的时钟源?是否可以随时改变预分频系数?RCC_SYSCLKConfig 设置系统时钟(SYSCLK)RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);/* Wait till HSI is used as system clock source */while(RCC_GetSYSCLKSource() != 0x00)这个函数只是配置好系统时钟不是随时改变系统时钟的函数。

所以有待做实验研究此处关闭外设:在运行模式下,任何时候都可以通过停止为外设和内存提供时钟(HCLK和PCLKx)来减少功耗。

通过设置AHB外设时钟使能寄存器(RCC_AHBENR)、APB2外设时钟使能寄存器(RCC_APB2ENR)和APB1外设时钟使能寄存器(RCC_APB1ENR)来开关各个外设模块的时钟。

以下介绍怎么进入这三种模式:进入睡眠模式:void PWR_EnterSLEEPMode(u32 SysCtrl_Set, u8 PWR_SLEEPEntry){//if (SysCtrl_Set)// *(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPONEXIT_Set; // Set SLEEPONEXIT //else// *(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPONEXIT_Set; // Reset SLEEPONEXIT*(vu32 *) SCB_SysCtrl &= ~SysCtrl_SLEEPDEEP_Set; // Clear SLEEPDEEP bitif(PWR_SLEEPEntry == PWR_SLEEPEntry_WFI) // Select SLEEP mode entry __WFI(); // Request Wait For Interrupt else__WFE(); // Request Wait For Event}可惜库函数种没有睡眠模式这个函数。

进入待机模式:看stm32手册进入停止模式方法附表:void PWR_EnterSTANDBYMode(void){PWR->CR |= CR_CWUF_Set; // 清除Wake-up 标志PWR->CR |= CR_PDDS_Set; // 选择进入STANDBY 模式// 置位SLEEPDEEP位*(vu32 *) SCB_SysCtrl |= SysCtrl_SLEEPDEEP_Set;__WFI(); // 等待中断请求}库函数就非常简单,直接调用PWR_EnterSTANDBYMode();进入停止模式看stm32手册进入停止模式方法附表:与进入待机模式对比可以发现不同的是停止模式电压调节器还是在继续工作的,待机模式是笔停止模式更近一步的低功耗模式。

(程序下一次再做出来)库函数非常简单直接调用PWR_EnterSTOPMode(u32 PWR_Regulator, u8 PWR_STOPEntry);另外还有不得不提的就是上电复位(POR)和掉电复位(PDR):stm32中有上电复位掉电复位电路,可以设置通过设置P VDE位设置PVD阀值,当VDD电压异常的时候就会复位,可以设置中断。

电源这一块应该记下的寄存器LPDS:停止模式下电压调节器的工作模式0:开启1:关闭PDDS:睡眠模式下进入停止模式还是待机模式。

0:待机模式1:停止模式。

CWUF:清除唤醒位CSBF:清除待机位SBFPVDE:电源监视器是否使能PLS:选择电源电压监测器的电压阀值DBP:后备区域的写保护?EWUF:使能wkup这个IO口0:不能唤醒1:唤醒。

在系统复位时软件清0。

SBF:用于查询是否处于待机状态。

WUF:唤醒标志。

是否被唤醒标志位。

发生唤醒事件或者RTC闹钟事件备份寄存器学stm32这么久了一直知道备份寄存器这个东西但是却一直没有过深入研究,只是知道他是是一个在低功耗模式下仍然可以工作的一个寄存器。

下面我将好好学习这个寄存器把他搞明白。

备份寄存器:VDD被切断,VBA T为其提供电源,它们不会应为系统复位而复位。

备份域复位来复位或(如果侵入检测引脚TAMPER功能被开启时)由侵入引脚事件复位。

BKP中三个位是必须知道。

TPAL:TAMPER高电平会清除备份区域寄存器。

TPE:TAMPER这个引脚作为通用IO口还是作为侵入检测用。

TPIE:检测到侵入事件时是否产生一个中断。

为方便测量,RTC时钟可以经64分频输出到侵入检测引脚TAMPER上。

通过设置RTC 校验寄存器(BKP_RTCCR)的CCO位来开启这一功能。

问题是怎么校准?RTC的时钟被输出到TAMPER上。

(去网上找线索)。

主要是一些标志位,以及设置中断,清除一些标志位。

时钟时钟这一块真的不知道看了多少遍,啥也不说了直接上图。

没错就是时钟树的图先来几个容易忽略的小知识点。

1、时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。

只有当某个时钟源准备就绪之后时钟源切换才会发生。

并且那一个准备好就选定那个位系统的时钟源。

(这个事真的吗?不行我得亲身试试看,先研究控制和状态寄存器,再做实验)2、PLL倍频系数。

只有在PLL关闭的情况下才可被写入3、PLL输入时钟源。

只能在关闭PLL时才能写入此位。

由此看来时钟切换容易实现。

先开好要的时钟源然后等待期准备好在设置SW位来设置系统时钟源。

但是倍频怎么在运行的时候切换呢?想法1:先进入待机或者停止模式(时钟将会被关闭)从停止模式返回的话会默认为HSI 作为系统时钟。

之后重新配置时钟源的输入,和PLL的配平系数。

RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。

除非备份域复位,此选择不能被改变。

为什么会这样呢除非备份域和RTC有很大的关系(关系是什么呢?我现在是不懂)备份域复位的两种方法:软件复位,备份区域复位可由设置备份域控制寄存器(RCC_BDCR)(见6.3.9节)中的BDRST位产生。

在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位我有很多疑惑在这里还没有搞清楚。

哎,,,不能操之过急。

只有慢慢来搞了。

但是学习方法已经总结出来就是寄存器操作和库函数一起看。

应为库函数的操作都是寄存器里面提到过得,分开二者完全不行。

边做笔记懂原理记寄存器懂库函数。

复位有三种复位:系统复位、电源复位和后备域复位。

系统复位:复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器。

当以下事件中的一件发生时,产生一个系统复位:1. NRST引脚上的低电平(外部复位)2. 窗口看门狗计数终止(WWDG复位)3. 独立看门狗计数终止(IWDG复位)4. 软件复位(SW复位)5. 低功耗管理复位可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。

电源复位当以下事件中之一发生时,产生电源复位:电源复位将复位除了备份区域外的所有寄存器1. 上电/掉电复位(POR/PDR复位)2. 从待机模式中返回以下介绍寄存器这些都是必须记住的结合库函数看。

相关文档
最新文档