STM32的Hal库中 Systick是在哪里进行初始化的?

在STM32的HAL库中,Systick的初始化通常发生在几个关键的函数调用过程中。以下是Systick初始化的主要步骤和位置:

  1. HAL_Init()函数调用

    • 在main()函数的开始部分,通常会调用HAL_Init()函数来初始化HAL库。
    • HAL_Init()函数内部会调用HAL_InitTick()函数,这是Systick初始化的关键一步。
  2. HAL_InitTick()函数调用

    • HAL_InitTick()函数的主要作用是配置Systick定时器。
    • 在这个函数内部,会调用HAL_SYSTICK_Config()函数,该函数根据系统时钟(SystemCoreClock)和设定的Tick频率(uwTickFreq)来计算Systick的重装载值(LOAD寄存器)。
    • 重装载值是Systick从该值开始递减计数,直到0时产生中断,并重新加载此值继续计数。
  3. HAL_SYSTICK_Config()函数调用

    • HAL_SYSTICK_Config()函数接收一个参数,该参数是根据系统时钟和Tick频率计算出的重装载值。
    • 函数内部会配置Systick的相关寄存器,包括CTRL寄存器(控制寄存器,设置时钟源、中断使能和使能Systick)、LOAD寄存器(重装载值寄存器)和VAL寄存器(当前值寄存器)。
  4. SystemClock_Config()函数调用(可选,但通常必要):

    • 在实际应用中,为了使Systick的时钟源更加稳定,通常会配置外部晶振,并通过SystemClock_Config()函数来更新系统时钟。
    • 在SystemClock_Config()函数的最后,通常会再次调用HAL_InitTick()函数,以确保Systick的时钟源和系统时钟保持一致。

Systick的初始化过程涉及多个函数调用,从main()函数中的HAL_Init()开始,经过HAL_InitTick()和HAL_SYSTICK_Config(),最终完成Systick的配置。此外,为了确保Systick的时钟源稳定,可能还需要调用SystemClock_Config()函数来配置系统时钟。

相关推荐
偶像你挑的噻3 小时前
11-Linux驱动开发-I2C子系统–mpu6050简单数据透传驱动
linux·驱动开发·stm32·嵌入式硬件
Chat_zhanggong3455 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
强化学习与机器人控制仿真5 小时前
RSL-RL:开源人形机器人强化学习控制研究库
开发语言·人工智能·stm32·神经网络·机器人·强化学习·模仿学习
bai5459366 小时前
STM32 PWM驱动LED呼吸灯
stm32·单片机·嵌入式硬件
智者知已应修善业6 小时前
【51单片机普通延时奇偶灯切换】2023-4-4
c语言·经验分享·笔记·嵌入式硬件·51单片机
btzhy11 小时前
STM32单片机:基本定时器应用:单脉冲模式(STM32L4xx)
stm32·单片机·嵌入式硬件·基本定时器应用:单脉冲模式
文sir.13 小时前
温湿度采集系统(stm32+mqtt+Onenet云平台+esp8266)
stm32·单片机·嵌入式硬件·mqtt·onenet·云平台·esp8266
DIY机器人工房13 小时前
嵌入式面试题:你有没有用过直接基于TCP协议,不借助HTTP、MQTT这类上层协议的项目经历?
stm32·单片机·嵌入式硬件·面试题·diy机器人工房
zhmc15 小时前
Cortex M0单片机指令执行周期
单片机·嵌入式硬件
编程小白菜12315 小时前
STM32L051单片机485Ymode升级后程序不能正常运行问题
stm32·嵌入式硬件