蓝桥杯嵌入式学习之STM32时钟详解
今天是大年初一
渐渐感觉自己的时间不够用了…
我现在好困,但是没办法,必须完成任务指标
希望明天能买到口罩…
在讲时钟之前先说点简单的东西。
第一个 extern的用法:
变量只用定义一次,在其他文件里要用的的话得用extern声明一下,声明可以很多次。
第二个 MDK寄存器地址映射分析:
外设基地址系统会给你一个准确得地址数值,以她为母体得子地址都是在基地址的基础上偏移得到。例如:
时钟环节:
stm32的时钟系统很复杂,比msp430复杂很多。
图中蓝框是一切时钟开始的地方
英文 | 含义 | 来源 | 频率(Hz) |
---|---|---|---|
HSI(HIGH SPEED INTERIOR) | 高速内部时钟 | RC振荡器产生(不稳定) | 8M |
HSE(HIGH SPEED EXTERN) | 高速外部时钟 | 晶振产生(稳定) | 8M |
LSE | 低速外部时钟 | 晶振 | 32.768K |
LSI | 低速内部时钟 | RC | 40K |
(你那么聪明,我表格偷懒应该问题不大吧~~
然后根据流程往下走就好了,倍频啊,分频啊,选择啦什么的。
PLL不得超过72MHz,然后给USB提供时钟的话,如果是48MHz那么刚好,如果是72MHz那么就1.5分频,不管怎么样USB都是48MHz输出。
MCO:是选择输出的时钟源。
以上所有的分频,倍频,选择都是通过寄存器来控制的,包括使能。
几个重要的时钟
SYSCLK(系统时钟)
AHB总线时钟
APB1总线时钟(低速): 速度最高36MHz
APB2总线时钟(高速): 速度最高72MHz
PLL时钟
结构体中重要的已经用红色标出,具体可以查看中文参考手册。
库函数的也如上图所示。
前三个系统默认帮你设置好了,但是你要是想要修改必须要会。