详细介绍一下这串STM32的代码

时间: 2023-11-12 18:06:44 浏览: 33
这段代码主要是用来初始化STM32的时钟和GPIO外设的。具体的流程如下: 1. 引用头文件 "Sys_RCC.h" 和 "stm32f10x.h"。 2. RCC_DeInit()函数将外设RCC寄存器重设为缺省值。 3. RCC_HSICmd(ENABLE)函数使能HSI(高速内部时钟)。 4. while循环等待HSI就绪,即等待RCC_FLAG_HSIRDY标志位被设置。 5. RCC_HCLKConfig(RCC_SYSCLK_Div1)函数设置AHB时钟(HCLK)的分频系数为1,即AHB时钟等于系统时钟。 6. RCC_PCLK2Config(RCC_HCLK_Div1)函数设置高速AHB时钟(PCLK2)的分频系数为1,即APB2时钟等于HCLK。 7. RCC_PCLK1Config(RCC_HCLK_Div2)函数设置低速AHB时钟(PCLK1)的分频系数为2,即APB1时钟等于HCLK/2。 8. FLASH_SetLatency(FLASH_Latency_2)函数设置FLASH存储器延时时钟周期数,这里设置为2个延时周期。 9. FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable)函数开启FLASH预取指缓存。 10. RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16)函数设置PLL时钟源为HSI/2,倍频系数为16,即频率为8/2*16=64Mhz。 11. RCC_PLLCmd(ENABLE)函数使能PLL。 12. while循环等待PLL准备好,即检查指定的RCC标志位(PLL准备好标志)设置与否。 13. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)函数设置系统时钟(SYSCLK)为PLLCLK。 14. while循环等待SYSCLK源为PLLCLK。 15. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE)函数打开重映射时钟,并打开重映射后的IO口。 16. GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE)函数开启IO口重映射。 17. GPIO_InitStructure结构体设置GPIO口的参数,包括GPIO口名称、工作模式和输出速度。 18. GPIO_Init(GPIOD,&GPIO_InitStructure)函数初始化GPIO口。 19. GPIO_ResetBits(GPIOD,GPIO_Pin_0 | GPIO_Pin_1)函数将GPIO口的0号和1号引脚拉低,降低功耗。 总的来说,这段代码的主要作用是进行STM32的时钟初始化和GPIO外设的初始化,使得STM32能够正常工作,并且设置了一些优化,比如开启了FLASH预取指缓存和IO口重映射等。

相关推荐

最新推荐

recommend-type

STM32单片机串口通讯代码

在STM32开发中,串口是我们最常用的接口。通过串口,我们很方便地把数据输出到电脑,方便我们进行程序调试。下面我们来看看STM32的串口通讯代码。
recommend-type

STM32 普通IO口 模拟串口

当然广泛参考广大网友的代码在此感谢网友。首先串口的最最最基本的数据格式是由10位数据组成,注意是最最最基本的当然要有些带各种校验的那些暂时不考虑毕竟要先会走才能飞嘛,首先,第一位开始位,其次是八个数据位...
recommend-type

如何在STM32中做超时检测?

请问有谁知道在STM32中如何做超时检测吗?目前STM32上有一个串口转RS485,挂了约50个节点。然后需要检测每个节点返回的命令是否超时。请问一下,如何来检测这个超时呢?
recommend-type

通过学习USART1深入STM32F107VCT6的串口通信

STM32有数个串口,每个串口都有一个自己独立的波特率寄存器USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的,由于STM32采用分数波特率,所以STM32的串口波特率设置范围很宽,而且误差很小。
recommend-type

STM32固件库SYSTEM 文件夹介绍

SYSTEM 文件夹里面的代码,此文件夹里面的代码由 ALIENTEK 提供,包含了几乎每个实验都可能用到的延时函数,位带操作,串口打印代码等。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay....
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。