标题:
对位操作,由别名转换到位的方法以及一些stm32硬件知识(3)
[打印本页]
作者:
yuyang911220
时间:
2015-3-27 22:57
标题:
对位操作,由别名转换到位的方法以及一些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还可以进行重新映射以及锁定(即使端口位的配置在下一次复位之前不能改变),关于对输入输出等等功能的配置等以及寄存器以后用的时候一点点的积累吧,现在记住也没用。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0