STM32F103模块初始化代码详解
需积分: 48 68 浏览量
更新于2024-09-09
4
收藏 17KB TXT 举报
"STM32F103的初始化代码示例"
STM32F103是一款基于ARM Cortex-M3内核的微控制器,由意法半导体(STMicroelectronics)生产。它拥有丰富的外设集,包括定时器、串行通信接口、ADC、DAC、SPI、I2C等。在开发基于STM32F103的项目时,正确地初始化这些模块是至关重要的。以下是一段简化的STM32F103初始化代码,用于设置系统时钟和GPIO。
代码首先包含了必要的库文件"stm32f10x_lib.h",该文件包含了STM32F10x系列的外设驱动函数声明。
系统时钟配置函数`RCC_Configuration(void)`中,首先调用了`RCC_DeInit()`来复位RCC寄存器,确保所有配置回到默认状态。接着,通过`RCC_HSEConfig(RCC_HSE_ON)`开启外部高速晶振(High Speed External,HSE)。外部晶振通常是8MHz,提供系统时钟的基础。
为了确保HSE已经启动,`RCC_WaitForHSEStartUp()`会等待HSE时钟稳定。如果启动成功,程序将进入后续的时钟配置。这里,选择HCLK(AHB总线时钟)为系统时钟的1倍速,即8MHz。然后,PCLK2(APB2总线时钟)被设置为与HCLK相同的速度,PCLK1(APB1总线时钟)被设置为HCLK的半速,即4MHz。
接下来,对FLASH设置延迟周期,这里是2个周期,以适应较高的系统时钟速度。启用预取指缓冲以提高代码执行效率。然后,配置PLL(锁相环)源为HSE,分频因子为1,乘数为9,这样PLL的输出频率为72MHz。启用PLL并等待其准备就绪后,设置系统时钟源为PLL。
最后,配置GPIOB时钟使能,这是为了使用GPIOB上的引脚。这只是GPIO初始化的一部分,完整的GPIO配置还包括设置模式(输入/输出)、速度、推挽/开漏、上拉/下拉等属性。
在实际项目中,除了系统时钟和GPIO,还需要初始化其他外设,如串口、定时器、ADC等。每个外设的初始化都需要调用相应的库函数,并根据应用需求配置相应的寄存器。例如,初始化串口可能包括设置波特率、数据位、停止位、奇偶校验等;初始化定时器可能涉及配置计数模式、中断、预分频器等。
这段代码提供了一个基本的框架,开发者可以在此基础上根据项目需求扩展,初始化更多外设或调整时钟配置。注意,实际项目中应确保所有外设初始化代码都符合芯片手册中的规定,避免引发硬件冲突或性能问题。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-28 上传
2022-09-19 上传
2021-09-10 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
huajikeji
- 粉丝: 7
- 资源: 13
最新资源
- n2h2p-开源
- LilyNice.gk9potbknt.gadJ3Ld
- volar:手掌| 一页最小视差模板
- beap:Python中的beap(双亲堆)算法参考实现
- UCAB_IngSoftware:未知〜电厂管理项目
- 美赛:Matlib下层次分析法,多属性模型
- MCFI.zip_界面编程_C#_
- mini-projects-3
- opengl实现画图板VS2010项目
- EventPlanner
- C++套接字实现UDP通讯,客户端以及服务端demo
- keap:Keap是一种堆数据结构,具有稳定的PriorityQueue和稳定的Keapsort排序算法
- ClickLearn Chrome Connector-crx插件
- pands-problem-sheet
- shader-playground:着色器游乐场的乐趣
- mysql2pg-开源