STM32F103模块初始化代码详解
需积分: 48 61 浏览量
更新于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 上传
点击了解资源详情
点击了解资源详情
2024-05-16 上传
huajikeji
- 粉丝: 7
- 资源: 13
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器