[牛人杂谈] M058S的时钟配置顺序

[复制链接]
 楼主| yiyigirl2014 发表于 2025-1-8 13:24 | 显示全部楼层 |阅读模式
根据手册的时钟顺序,应该是先配置时钟源,是选择内部RC还是选择外部晶振,或者都配置上。
000.png
另外就是PLL,使能了PLL的同时要选择PLL从谁那获取PLL的时钟源。
上面对应的就是使能相关的时钟源。
然后就是这个,注意到有个HCLK,CPUCLK,PCLK,这三个都是从同一个地方分出来,其实是同一个时钟到了三个不同的目的地。
001.png
其实他们是同一个时钟信号。所以库函数中定义获取这三个时钟的是同一个操作
  1. uint32_t CLK_GetHCLKFreq(void)
  2. {
  3.     SystemCoreClockUpdate();
  4.     return SystemCoreClock;
  5. }

  6. /**
  7.   * [url=home.php?mod=space&uid=247401]@brief[/url]      Get PCLK frequency
  8.   * @param      None
  9.   * [url=home.php?mod=space&uid=266161]@return[/url]     PCLK frequency
  10.   * [url=home.php?mod=space&uid=1543424]@Details[/url]    This function get PCLK frequency. The frequency unit is Hz.
  11.   */
  12. uint32_t CLK_GetPCLKFreq(void)
  13. {
  14.     SystemCoreClockUpdate();
  15.     return SystemCoreClock;
  16. }


  17. /**
  18.   * @brief      Get CPU frequency
  19.   * @param      None
  20.   * @return     CPU frequency
  21.   * @details    This function get CPU frequency. The frequency unit is Hz.
  22.   */
  23. uint32_t CLK_GetCPUFreq(void)
  24. {
  25.     SystemCoreClockUpdate();
  26.     return SystemCoreClock;
  27. }
明白了这个就知道如何配置HCLK了,其实就是选择HCLK的时钟源与分频
  1. CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC,CLK_CLKDIV_HCLK(1));
最后就是各个模块的时钟使能与配置了。
比如串口0,串口0有三个可选的时钟源,HIRC,HXT,PLL
  1. CLK_EnableModuleClock(UART0_MODULE);
  2.         CLK_SetModuleClock(UART0_MODULE,CLK_CLKSEL1_UART_S_HXT,CLK_CLKDIV_UART(1));



 楼主| yiyigirl2014 发表于 2025-1-8 13:25 | 显示全部楼层
配置时钟时候你们都是怎么下手的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

3675

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部