对位操作,由别名转换到位的方法以及一些stm32硬件知识(3)
- UID
- 1029342
- 性别
- 男
|
对位操作,由别名转换到位的方法以及一些stm32硬件知识(3)
时钟 有三种不同的时钟源可以被用来驱动系统时钟(SYSCLK)
● HSI振荡器时钟 ● HSE振荡器时钟 ● PLL时钟
这些设备有以下2种二级时钟源:
● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。
● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。 当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
高速外部时钟由(HSE)以下两种时钟源组成:
● HSE外部晶体/陶瓷谐振器 ● HSE用户外部时钟
为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的振荡器来调整。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,同时保证OSC_OUT引脚悬空。
还有HSI时钟、PLL时钟、LSE时钟、LSI时钟、时钟安全选择、RTC时钟、看门狗时钟等等也应该理解的这里就不一一做笔记了,反正以后遇到了后再来查阅。
关于系统时钟的选择,当系统复位的时候HIS被默认选为系统时钟,当其他时钟源被选为系统时钟之前,不能被停止。只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。 在时钟控制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。
微控制器允许输出时钟信号到外部MCO引脚。 相应的GPIO端口寄存器必须被配置为相应功能。
以下四个时钟信号可被选作MCO时钟:
● SYSCLK ● HSI ● HSE ● 除2的PLL时钟
时钟的选择由时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。
笔记五 GPIO和AFIO(复用功能I/O)
相当于51单片机I/O口来说,stm32的I/O就要复杂得多了,不仅有多种输入输出方式,还需要配置不同的寄存器来达到相应的功能。
(一) 每个 GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器)(GPIOx_IDR,GPIOx_ODR),一个32为置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)及一个32为锁定寄存器(GPIOx_LCKR)。可以将其配置如下模式:
─ 输入浮空、 输入上拉、 输入下拉、 模拟输入
─ 开漏输出、 推挽式输出、 推挽式复用功能、 开漏复用功能
可以按照下面的表格对其配置:
表一 端口位配置表
表二输出模式位
复位期间和刚复位后,复用功能未开启,I/O口被配置为浮空输入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。复位后JTAG相关的引脚被置位上拉或者下拉模式。
所有的端口都可以配置为外部中断模式,不过首先必须配置为输入模式。对于复用功能现在不怎么了解怎么用,可能今天头脑不清晰的原因,不过先不管吧,等以后碰到再说。对gpio还可以进行重新映射以及锁定(即使端口位的配置在下一次复位之前不能改变),关于对输入输出等等功能的配置等以及寄存器以后用的时候一点点的积累吧,现在记住也没用。 |
|
|
|
|
|