一、对ST的系统时钟的理解与笔记

一、对于系统的启动和初始化流程

1.启动流程

系统启动文件startup_xx.s进行系统并调用复位中断复位服务程序。在复位中断服务程序里调用SystemInit函数,此函数在文件system_stm32f4xx.c里面之后调用编译器封装好的函数__main ,进入到main中执行用户的函数

2.初始化流程

在main函数中的重要初始化HAL_Init函数即HAL库初始化函数,在stm32f4xx_hal.c中进行配置。
system_stm32f4xx.c中有关于HSE_VALUE的配置,当时钟不匹配时,会导致串口通信异常现象,可在此文件中修改,SystemInit也在此处定义。

二、初始化中函数的作用

1、HAL_Init函数的作用:

设置中断分组,
设置滴答计数器的每1ms进入中断
配置Flash的指令预取,(即配置flash,供程序应用)

2、HAL_DInit函数的作用:

复位HAL库和滴答时钟。 
 复位了APB1,2的时钟以及AHB1,2,3的时钟。 

三、关于滴答计数器的1ms为时基解读

1、HAL库不像之前的标准库,在系统启动函数SystemInit里面做了RCC初始化
,HAL库是没有做的,所以进入到main函数后,系统还在用内部高速时钟HSI,
对于F4来说,HSI主频是16MHz。
2、对该函数定义为弱定义,在HAL_Init中被直接调用:
SystemCoreClock该值默认为
uint32_t SystemCoreClock = 16000000;
__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
   
  /*Configure the SysTick to have interrupt in 1ms time basis*/
  HAL_SYSTICK_Config(SystemCoreClock
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值