STM32之系统时钟
来源:互联网 发布:wifi推送广告软件 编辑:程序博客网 时间:2024/04/29 15:28
作者:stm_小强
企鹅:759040024
说明:
库文件版本:3.5.0
1. 3.5.0版本的库文件将SystemInit函数放在了启动文件里
Reset handler为复位异常,当发生异常时就会跳到相应的中断向量表定义的函数去执行这里也就是执行SystemInit标号代表的c函数
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main // 这里应该是申明标号的吧?不是太清楚IMPORT 这个关键字
IMPORT SystemInit
LDR R0, =SystemInit // 跳到SystemInit的连接地址去执行
BLX R0 //带返回的跳转指令
LDR R0, =__main //跳转到main函数去执行
BX R0
ENDP
2.SystemInit函数主要实现对系统时钟的初始化,能满足大多数开发的需求.会根据宏去调用相应的SetSysClock()函数
相关代码:摘取自system_stm32f10x.c
void SystemInit (void)
{
。。。。
SetSysClock(); //最重要的函数,根据定义的系统时钟的宏对rcc相关寄存器初始化
。。。。
}
static void SetSysClock(void)
{
#ifdef SYSCLK_FREQ_HSE
SetSysClockToHSE();
#elif defined SYSCLK_FREQ_24MHz
SetSysClockTo24();
#elif defined SYSCLK_FREQ_36MHz
SetSysClockTo36();
#elif defined SYSCLK_FREQ_48MHz
SetSysClockTo48();
#elif defined SYSCLK_FREQ_56MHz
SetSysClockTo56();
#elif defined SYSCLK_FREQ_72MHz //设置为sysclk=72M
SetSysClockTo72(); //由于我们定义了SYSCLK_FREQ_72MHz这个宏所以这里使用这个函数去初始化寄存器
//可以修改这个宏实现不同的时钟频率
#endif
}
3.分析SetSysClockTo72(),对照寄存器可以知道初始化完成后各时钟为
Sysclk=72Mhz
hclk=72Mhz
pclk1=36Mhz
pclk2=72Mhz
clkusb=48Mhz
- STM32之系统时钟
- STM32之系统时钟
- STM32学习笔记之时钟系统
- STM32之系统时钟基定时器
- STM32之复位和系统时钟
- STM32之系统时钟的建立
- STM32系统时钟
- stm32的时钟系统
- STM32系统时钟
- STM32 系统时钟设置
- STM32时钟系统
- STM32系统时钟修改
- stm32时钟系统
- STM32 系统时钟设置
- STM32时钟系统
- STM32 时钟系统
- STM32系统时钟配置
- STM32 时钟系统
- 十大前端开发框架
- 实现断点续传
- JavaSE0012_抽象类与方法和接口
- JavaSE0013_关键字Static和Final
- hdu 2697 WOJ dp
- STM32之系统时钟
- JavaSE0014_设计模式之单例模式
- SQL注入学习----检测
- JavaSE0015_包与导入语句剖析
- POJ 3628 Bookshelf 2(DP:01背包)
- JavaSE0016_访问控制符详解
- socket 各种模型的性能
- java SE GUI基础知识
- JavaSE0017_Object类详解