写在前面:收到很多bb的私信说有些图片不能正常显示,博主最近比较忙,但是一有时间就会更新维护图片滴!bb们可以点赞收藏起来方便后续查看更新呀~CMSIS时钟STM32有以下4个时钟源:1)高速外部时钟(HSE):以外部晶振作为时钟源,晶振频率可取范围为4~16 MHz,我们一般采用8 MHz的晶振。2)高速内部时钟(HSI):由内部RC振荡器产生,频率为8 MHz,但不稳定。3)低速外部时钟(LSE):以外部晶振作为时钟源,主要提供给实时时钟模块,所以一般采用32.768 kHz。配套STM32实验板上用的是32.768 kHz、6p负载规格的晶振。4)低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40 kHz。从时钟树的分析,看到经过一系列的倍频、分频后得到了几个与我们开发密切相关的时钟。1)SYSCLK:系统时钟,是STM32大部分器件的时钟来源,主要由AHB预分频器分配到各个部件。2)HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器、DMA及Cortex内核,是Cortex内核运行的时钟,CPU主频就是这个信号,它的大小与STM32运算速度、数据存取速度密切相关。3)FCLK:同样由AHB预分频器输出得到,是内核的“自由运行时钟”。“自由”表现在它不来自时钟HCLK,因此在HCLK时钟停止时FCLK也继续运行。它的存在可以保证,在处理器休眠时也能够采样到中断和跟踪休眠事件,它与HCLK互相同步。4)PCLK1:外设时钟,由APB1预分频器输出得到,最大频率为36 MHz,提供给挂载在APB1总线上的外设。5)PCLK2:外设时钟,由APB2预分频器输出得到,最大频率可为72 MHz,提供给挂载在APB2总线上的外设。GPIOGPIO的8种工作模式4种输入模式:结构图的上半部分为输入模式结构,分为上拉输入模式、下拉输入模式、浮空输入模式和模拟输入模式。接下来就遇到了两个开关和电阻,与VDD相连的为上拉电阻,与VSS相连的为下拉电阻。再连接到TTL施密特触发器就把电压信号转化为0、1的数字信号存储在输入数据寄存器(IDR)。我们可以通过设置配置寄存器(CRL、CRH)来控制这两个开关,于是就可以得到GPIO的上拉输入模式(GPIO_Mode_IPU)和下拉输入模式(GPIO_Mode_IPD)了。从它的结构我们就可以理解,若GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平。而下拉模式则相反,在默认状态下其引脚数据为0,低电平。而STM32的浮空输入模式(GPIO_Mode_IN_FLOATING)在芯片内部既没有接上拉,也没有接下拉电阻,经由触发器输入。配置成这个模式直接用电压表测量其引脚电压为1点几伏,这是个不确定值。由于其输入阻抗较大,一般把这种模式用于标准的通信协议如I2C、USART的接收端。模拟输入模式(GPIO_Mode_AIN)则关闭了施密特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送至ADC模块,由ADC采集电压信号。所以使用ADC外设的时候,必须设置为模拟输入模式。4种输出模式:结构图的下半部分为输出模式结构,分为推挽输出模式、开漏输出模式、复用推挽输出模式和复用开漏输出模式。线路经过一个由P-MOS管和N-MOS管组成的单元电路。而所谓推挽输出模式,则是根据其工作方式来命名的。在输出高电平时,P-MOS管导通;低电平时,N-MOS管导通。两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的供电平为0伏,高电平为3.3伏。的复用场合,就使用复用开漏模式。其他不同复用场合的复用模式引脚配置将在具体的例子中讲解。在使用任何一种开漏模式时,都需要接上拉电阻。在开漏输出模式时,如果我们控制输出为0,低电平,则使N-MOS管导通,使输出接地,若控制输出为1(无法直接输出高电平),则既不输出高电平,也不输出低电平,为高阻态。为正常使用时必须在外部接上一个上拉电阻。它具有“线与”特性,即很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。STM32的GPIO输出模式就分为普通推挽输出(GPIO_Mode_Out_PP)、普通开漏输出(GPIO_Mode_Out_OD)及复用推挽输出(GPIO_Mode_AF_PP)、复用开漏输出(GPIO_Mode_AF_OD)。普通推挽输出模式一般应用在输出电平为0和3.3伏的场合。而普通开漏输出模式一般应用在电平不匹配的场合,如需要输出5伏的高电平,就需要在外部接一个上拉电阻,电源为5伏,把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5伏的电平。对于相应的复用模式,则是根据GPIO的复用功能来选择的,如GPIO的引脚用作串口的输出,则使用复用推挽输出模式。如果用在IC、SMBUS这些需要线与功能点灯1)为控制LED灯,知道要使用GPIO外设。2)了解GPIO外设有什么功能,要如何使用。3)获知GPIO的地址映射,知道它所挂载的总线APB2。4)了解ST官方库对寄存器的封装。5)了解时钟树,查看GPIOC的时钟来源,即PCLK2。6)在stm32f10x_conf.h文件中包含用到的头文件stm32f10x_gpio.h、stm32f10x_rcc.h。7)在工程模板的基础上添加led.c、led.h用户文件。8)编写驱动初始化函数