stm32f103库函数时钟
在STM32F103中使用库函数配置时钟系统,主要涉及标准外设库(Standard Peripheral Library)中的RCC(复位与时钟控制)相关函数。以下是关键步骤和函数说明:
1. 时钟源配置
STM32F103支持多种时钟源:
- HSI:内部8MHz RC振荡器(精度较低)
- HSE:外部晶体振荡器(通常8MHz,更高精度)
- PLL:锁相环倍频输出(可提升时钟频率)
常用函数:
// 使能HSE(外部高速时钟)
RCC_HSEConfig(RCC_HSE_ON);
while (!RCC_WaitForHSEStartUp()); // 等待HSE就绪
// 配置PLL(以HSE为例,倍频到72MHz)
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // HSE不分频,9倍频(8MHz*9=72MHz)
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 等待PLL就绪
2. 系统时钟切换
将PLL输出作为系统时钟源:
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // 切换系统时钟到PLL
while (RCC_GetSYSCLKSource() != 0x08); // 确认切换成功
3. 总线时钟分频
- AHB:最高72MHz(一般不分频)
- APB1:最高36MHz(需2分频)
- APB2:最高72MHz(无需分频)
RCC_HCLKConfig(RCC_SYSCLK_Div1); // AHB时钟 = 系统时钟(72MHz)
RCC_PCLK1Config(RCC_HCLK_Div2); // APB1时钟 = 36MHz
RCC_PCLK2Config(RCC_HCLK_Div1); // APB2时钟 = 72MHz
4. 外设时钟使能
必须开启外设对应的时钟才能使用其功能:
// 示例:开启GPIOA和USART1时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
完整配置示例(72MHz系统时钟)
void SystemClock_Config(void) {
// 1. 使能HSE
RCC_HSEConfig(RCC_HSE_ON);
while (!RCC_WaitForHSEStartUp());
// 2. 配置PLL:HSE作为源,9倍频(8MHz*9=72MHz)
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
// 3. 切换系统时钟到PLL
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while (RCC_GetSYSCLKSource() != 0x08);
// 4. 配置总线分频
RCC_HCLKConfig(RCC_SYSCLK_Div1); // AHB=72MHz
RCC_PCLK1Config(RCC_HCLK_Div2); // APB1=36MHz
RCC_PCLK2Config(RCC_HCLK_Div1); // APB2=72MHz
}
注意事项
- APB1限制:其时钟不可超过36MHz(如定时器挂在APB1下,需注意分频)。
- 时钟安全:若使用HSE,可启用
RCC_ClockSecuritySystemCmd(ENABLE)检测故障。 - 低功耗:睡眠模式下可通过
RCC_APB1PeriphClockCmd()关闭外设时钟。
通过合理配置时钟,可充分发挥STM32F103的性能并优化功耗。建议结合官方库文件stm32f10x_rcc.h/c深入理解函数参数。
STM32F103单片机时钟树结构图及时钟配置
STM32属于Cortex-M3内核的单片机,时钟结构比之前的51单片机较复杂的多,根据数据手册,STM32F103的
2023-01-19 16:36:00
STM32F103中断串口通信USART
本文基于笔者之前的博客STM32F103串口通信USART小试牛刀,在此基础上,加上中断函数,并补充HAL函数实现。文章目录一、实验原理二、实验
资料下载
李辉
2022-01-14 10:39:40
STM32F103 库函数写外部中断时程序卡死,追踪运行卡死在启动文件.s的 B.中解决办法,实测OK,供参考
STM32F103 库函数写外部中断时程序卡死,追踪运行卡死在启动文件.s的 B.中解决办法,实测OK,供参考
资料下载
佚名
2021-12-08 12:21:11
ULN2003驱动28BYJ48步进电机STM32F103版库函数合集免费下载
ULN2003驱动28BYJ48步进电机STM32F103版库函数合集免费下载
资料下载
ah此生不换
2020-03-10 08:00:00
STM32F103使用(3.5)库函数新建工程
意法半导体的STM32系列都支持库函数编程,库函数比常规的寄存器方式编程更加好移植,特别是项目需要在几个系列芯片上移植,使用
2022-05-28 14:00:43
怎样配合ST提供的库函数理解STM32F103的USB模块
今天有空,开贴讲讲,怎样配合ST 提供的库函数理解STM32F103 的USB模块,以及怎么调用这些库函数来实现基本的USB通信。题目很大,先只
GPIO的常用库函数使用方法总结
+GPIOx_LCKR作用和配置STM32F103五分钟入门系列(三)GPIO的常用库函数使用方法总结+一个网络上的误区各类时钟的实现+各类
STM32F103入门系列
学习板:STM32F103ZET6强推系列:STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览