
STM32时钟与延迟函数的初始化
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本篇技术文档详细介绍了如何在STM32微控制器中设置和配置系统时钟以及实现精确延时功能的方法,旨在帮助工程师快速掌握相关编程技巧。
STM32是ST公司生产的一款广泛使用的基于ARM Cortex-M系列的32位微控制器,具备强大的处理能力和丰富的外设接口,在嵌入式系统开发中应用非常广泛。为了确保其正常运行,需要配置系统的时钟,并且在没有操作系统的环境下实现精确延迟函数来满足各种实时任务的需求。
我们首先了解STM32系统时钟的主要来源:
1. HSI(高速内部振荡器):这是内置的8MHz固定频率振荡器,无需外部元件即可快速启动,但其精度不如外部晶振。
2. HSE(高速外部振荡器):由外部晶体、谐振器或信号提供。HSE可以设置为不同频率值,通常设定在8MHz或16MHz范围内。
3. PLL(锁相环):通过倍频或分频HSI或HSE的输出来生成系统所需的时钟。
STM32系统的主时钟SYSCLK可以从上述三个来源中选取一个。配置RCC->CFGR寄存器,可以决定 SYSCLK 使用HSI、HSE还是PLL作为其输入源,并且还可以设置不同的预分频器(例如APB1和APB2的预分频器),以适应外设的工作频率。
在初始化系统时钟的过程中,通常会进行以下步骤:
1. 复位并配置向量表:确保中断和异常地址正确。
2. 启用外部高速HSE,并等待其就绪状态。
3. 设置PLL参数并将PLL设置为系统的主时钟源。
4. 配置AHB、APB1和APB2的预分频器,以适应外设的工作频率上限。
5. 调整FLASH访问时间:当使用PLL作为系统时钟源时,需要配置相应的等待周期。
在代码层面,STM32的初始化过程会涉及RCC模块寄存器的操作。这些操作包括但不限于复位RCC、选择和配置时钟源、设置预分频器以及调整FLASH访问时间等步骤。
当处于裸机环境进行编程时,为了实现精确延迟功能通常使用SysTick定时器。此24位递减计数器可以用于生成周期性中断或软件延迟能力。其基本操作流程包括:
1. 计算所需的等待时间对应的系统时钟周期。
2. 将计算出的值设置到SysTick重载寄存器中。
3. 启动定时器并监测直到计数至0,产生一个中断或者触发查询标志位。
4. 清除当前状态或重新加载延时期限以继续生成延迟。
在使用SysTick进行软件延迟时需要注意其最大可编程时间限制。例如,在系统时钟为72MHz的情况下,利用24位的SysTick定时器所能实现的最大约1864毫秒左右的延迟。
开发者在实际应用中需要参考特定型号STM32的手册来获取具体配置方法和寄存器设置值,因为不同系列和型号可能有所差异。了解这些时钟配置的知识是进行STM32系统开发的基础。
全部评论 (0)


