当前位置: 首页 > article >正文

S32K144的SDK库中两种时钟初始化的区别(一)

文章目录

  • 1.背景
  • 2.初始化代码分析

1.背景

在使用时钟初始化时,官方的例程中一直在使用两个函数来进行初始化,如下:

   CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
   CLOCK_DRV_GetFreq(CORE_CLK, &i);
   CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);

而还有一个用于时钟初始化的函数,如下:

CLOCK_DRV_Init(&clockMan1_InitConfig0);	

笔者第一次使用S32K144时,并没有看官方的例程,一直在使用CLOCK_DRV_Init这个函数来初始化时钟,很明显,这种方式比较简洁,但是不论是3.00的SDK例程还是4.03的SDK例程,均使用了第一种方式来做时钟初始化,那这两种时钟的设置有哪些区别呢?此篇文章先分析一下CLOCK_DRV_Init函数。

2.初始化代码分析

官网的注释大致是“仅对时钟相关寄存器进行设置,不通知驱动”,一看这个解释,压根不明白它在说什么,那只好分析一下源代码。
函数的源代码如下:

status_t CLOCK_DRV_Init(clock_manager_user_config_t const * config)
{
   
    status_t result;
    clock_manager_user_config_t config_default;
    clock_manager_user_config_t const * cfg = config;

    DEV_ASSERT(CLOCK_SYS_GetCurrentRunMode() == SCG_SYSTEM_CLOCK_MODE_RUN);

    if (config == NULL)
    {
   
        /* Get default configuration */
        CLOCK_SYS_GetDefaultConfiguration(&config_default);
        cfg = &config_default;
    }

   

http://www.kler.cn/a/623267.html

相关文章:

  • 注意力蒸馏技术
  • 数据结构--二叉树--其一
  • 五重涅槃·量子篇:混沌工程破虚空,九阳真火铸金身
  • WPF InkCanvas 控件详解
  • Spring Boot自动配置原理解析
  • python实现股票数据可视化
  • 《Python实战进阶》No36: 使用 Hugging Face 构建 NLP 模型
  • 基于 GEE 利用 Landsat4、5、7、8、9 数据计算 MNDWI 指数实现 1990—2024 年研究区水体变化分析
  • Spring Boot 3.4.3 基于 Caffeine 实现本地缓存
  • Linux基础指令(一)
  • golang 的io与os包中的常用方法
  • VITA 模型解读,实时交互式多模态大模型的 pioneering 之作
  • HarmonyOs学习 实验六:tabs标签与Swiper轮播图页面设计
  • 2023年3月全国计算机等级考试真题(二级C语言)
  • 【算法】并查集基础讲解
  • TCP协议与wireshark抓包分析
  • 现代优雅杂志海报徽标设计手写英文字体安装包 Attomes – Brush Handwritten Font
  • 【Prompt实战】邮件意图分类助手
  • git | 版本切换的相关指令
  • 深度学习入门(二):从感知机到神经网络