HT-时钟配置库简单使用

1.时钟配置分析

1)有关系统运行时钟的配置图

2)整个时钟架构的框图

2.配置时钟的代码流程简析

以官方库中的48MHZ标准配置为例:

  • 默认初始化时钟(配置成HSI);

    CKCU_DeInit();
    
  • 使能HSE,并检查HSE是否就绪(没有HSE就死循环了);

    CKCU_HSECmd(ENABLE);
    ClockStatus = CKCU_WaitHSEReady();
    if(ClockStatus == SUCCESS)
    
    • HSE就绪的话,填写结构体配置PLL锁相环(⭐不同频率的配置关键1),并使能锁相环。

          CKCU_PLLInit(&PLLInit);CKCU_PLLCmd(ENABLE);//主要结构体成员如下:
      1.  ClockSource //时钟来源,可填:CKCU_PLLSRC_HSE/CKCU_PLLSRC_HSI
      2.  CFG  //配置时钟用,可填宏:#define CKCU_PLL_4M_48M         ((12UL << 23) | (0UL << 21))#define CKCU_PLL_4M_40M         ((10UL << 23) | (0UL << 21))#define CKCU_PLL_8M_48M         (( 6UL << 23) | (0UL << 21))#define CKCU_PLL_8M_40M         (( 5UL << 23) | (0UL << 21))#define CKCU_PLL_8M_32M         (( 4UL << 23) | (0UL << 21))#define CKCU_PLL_12M_48M        (( 4UL << 23) | (0UL << 21))#define CKCU_PLL_16M_48M        (( 3UL << 23) | (0UL << 21))#if (LIBCFG_CKCU_SYS_CK_60M)#define CKCU_PLL_4M_60M         ((0UL << 28) | (15UL << 23) | (0UL << 21))#define CKCU_PLL_8M_60M         ((1UL << 28) | (15UL << 23) | (0UL << 21))#define CKCU_PLL_12M_60M        ((0UL << 28) | ( 5UL << 23) | (0UL << 21))#define CKCU_PLL_16M_56M        ((1UL << 28) | ( 7UL << 23) | (0UL << 21))
      3.  BYPASSCmd//是否使能旁路
      
    • 等待锁相环标志位就绪。

       while(CKCU_GetClockReadyStatus(CKCU_FLAG_PLLRDY) == RESET);
      
    • 将FLASH等待的时钟对应配置。

      FLASH_SetWaitState(FLASH_WAITSTATE_1);
      

      Flash等待状态为哪一种(0/1/2)可以参考手册中对Flash的CFCR寄存器的[2:0]位中的描述。

    • 配置分频系数(⭐不同频率的配置关键2)

      CKCU_SetHCLKPrescaler(CKCU_SYSCLK_DIV1);
      
    • 设置时钟来源为锁相环PLL输入,并检查其是否设置成功。

          ClockStatus = CKCU_SysClockConfig(CKCU_SW_PLL);if(ClockStatus != SUCCESS){while(1);}
      
  • 整个函数如下:

void SysClockConfig_48MHz(void)
{ErrStatus ClockStatus;/* Reset CKCU, SYSCLK = HSI */CKCU_DeInit();/* Enable HSE */CKCU_HSECmd(ENABLE);/* Wait until HSE is ready or time-out */ClockStatus = CKCU_WaitHSEReady();if(ClockStatus == SUCCESS){/* PLL configuration, PLLCLK = 48 MHz */PLLInit.ClockSource = CKCU_PLLSRC_HSE;#if defined(HTCFG_HSE_12MHZ)PLLInit.CFG = CKCU_PLL_12M_48M;#elsePLLInit.CFG = CKCU_PLL_8M_48M;#endifPLLInit.BYPASSCmd = DISABLE;CKCU_PLLInit(&PLLInit);CKCU_PLLCmd(ENABLE);/* Wait until PLL is ready */while(CKCU_GetClockReadyStatus(CKCU_FLAG_PLLRDY) == RESET);/* FLASH wait state configuration */FLASH_SetWaitState(FLASH_WAITSTATE_1);  /* FLASH one wait clock *//* HCLK = SYSCLK/1 */CKCU_SetHCLKPrescaler(CKCU_SYSCLK_DIV1);/* Configure PLL as system clock */ClockStatus = CKCU_SysClockConfig(CKCU_SW_PLL);if(ClockStatus != SUCCESS){while(1);}}else{/* HSE is failed. User can handle this situation here. */while(1);}
}

HT单片机笔记1-时钟配置(2022/2/20)相关推荐

  1. 合泰32笔记2-GPIO使用(2022/2/20)

    HT-GPIO使用 1.依赖库的位置 如上图:合泰的库文件的头文件在文件夹外部,且是5个上级目录的子文件内, 所以,移植时注意将合泰的源文件夹(以外设命名的文件夹)放在三级含有库的三级子文件夹内. 下 ...

  2. 华大单片机HC32L136J8TA读取DS18B20温度(源码+时钟配置)

    免费的C语言和linuxPDF文档:传送门 有一点C语言基础和华大单片机开发经验,应该就能看得懂就不多介绍了,有疑问可以留言,看到就回了; 关于协议具体解析:传送门@不脱发的程序猿 注(2021-05 ...

  3. 【C51单片机学习笔记--DS1302时钟芯片蜂鸣器I2C总线AT24C02存储器】

    C51单片机学习笔记–DS1302时钟芯片&&蜂鸣器&&I2C总线&&AT24C02存储器 文章目录 一.DS1302时钟芯片介绍 二.DS1302时钟 ...

  4. 火牛单片机rtc时钟配置_MSP430单片机之RTC-实时时钟

    RTC-Real Time Clock是430单片机的实时时钟模块,可以配置成实时时钟模式(万年历)或者一般目的的32位计数器模式,其中实时时钟模式提供了年月日.时分秒,可以选择BCD码或者二进制格式 ...

  5. 火牛单片机rtc时钟配置_亲测实验,RTC使用内部低速时钟LSI时,对RTC的配置过程...

    下面是一开始写程序时,配置过程: char RTCInit() { char count = 0; StartTime.year = 16; StartTime.month = 3; StartTim ...

  6. 辉芒微单片机开发教程_辉芒微单片机笔记004:IO寄存器配置,点亮一只LED

    刚开始对开发软件环境和仿真器的使用还不算很熟,先点亮一只LED看一下软硬件的操作有没有问题.电子芯片 在点亮LED之前,要弄懂二个寄存器的工作原理: 1.TRISA方向寄存器. 2.PORTA控制寄存 ...

  7. pic单片机内部时钟校准c语言,pic单片机时钟配置

    pic单片机时钟配置 已有 1687 次阅读2016-1-2 18:38 |个人分类:发现 还是PIC12F1572,某个io 输出脉冲信号.io置高,置低都是立即数给寄存器,电平竟然要16us才变化 ...

  8. PIC单片机的学习——时钟的配置与相关外设的一些计算

    一.概念 Fcy是CPU时钟,Fosc晶振频率.Fcy = Fosc/2,也就是CPU时钟是晶振频率的1/2. 二.开发环境 IDE:MAPLABX MCU型号:PIC24EP64GP204 三.系统 ...

  9. 火牛单片机rtc时钟配置_怎么用STM32F103RTC进行时钟的配置

    #include "sys.h" #include "delay.h" #include "usart.h" #include " ...

最新文章

  1. 单核工作法13:永不拖延(下)
  2. 使用apache搭建tomcat集群
  3. vue + elementui 通过父子组件实现弹框
  4. MS-SQL的智能脚本智能提示失效丢失
  5. nssm在服务器上的使用超详细说明
  6. 2021年软考DHCP技术点+配置
  7. 第一部分 第四章 1059-1101 答案合集
  8. UbuntuHadoop集群搭建过程
  9. JavaWeb学习笔记(六)—— JSP连接数据库SQL Server
  10. 嵌入式三大职业发展方向
  11. 现在大多数论文存在的弊病——可重复性
  12. perl中tr的用法
  13. FormulaR1C1是EXCEL中单元格公式输入方法
  14. Unity Shader入门精要 第2章 读书笔记
  15. 计算机评游戏图形低,5常见的PC游戏图形选项说明 | MOS86
  16. 0x80004005
  17. 微信小程序操作教程(个人用户注册)
  18. linux学习笔记_1.系统简介
  19. 408计算机组成考试大纲,2021计算机考研408大纲:计算机组成原理部分解析及备考指导...
  20. bach cello

热门文章

  1. python excel写入日期变数字_解决python 读取excel时 日期变成数字并加.0的问题
  2. hihocoder #1163 : 博弈游戏·Nim游戏
  3. 编写Java程序,实现简单的五子棋博弈游戏(美和易思Java练习习题)
  4. python数组定义_python定义数组
  5. 关于Spring5.3之后StringUtils.isEmpty被弃用
  6. 教你三种照片风格处理教程,秒变女神
  7. 如何删去微信小程序服务器,微信小程序怎么注销
  8. 【STM32+机智云】机智云手机APP点灯实验踩坑记录
  9. 大龄青年能转行IT吗?30岁老哥现身说法
  10. Mac数据恢复首选easyrecovery