CH582-2-系统时钟配置初探
在官网的例程中,一般main函数前面都有一句:
SetSysClock(CLK_SOURCE_PLL_60MHz);
那么这个函数到底做了什么呢?是真的把时钟设置为60MHz了吗,我们打开源码看一下:
首先看看参数:
/**
* @brief 系统主频定义
*/
typedef enum
{
CLK_SOURCE_LSI = 0x00,
CLK_SOURCE_LSE,
CLK_SOURCE_HSE_16MHz = 0x22,
CLK_SOURCE_HSE_8MHz = 0x24,
......此处省略
CLK_SOURCE_PLL_80MHz = 0x46,
CLK_SOURCE_PLL_60MHz = 0x48,
......此处省略
} SYS_CLKTypeDef;
然后是主函数,具体细节已经注释:
/*********************************************************************
* @fn SetSysClock
*
* @brief 配置系统运行时钟
*
* @param sc - 系统时钟源选择 refer to SYS_CLKTypeDef
*
* @return none
*/
__HIGH_CODE /*__HIGH_CODE意为将代码下载到ram里运行 */
void SetSysClock(SYS_CLKTypeDef sc)
{
uint32_t i;
/*
* 对 R8_SAFE_ACCESS_SIG 寄存器的操作就是开关安全模式,下面是手册里的解释:
* 部分寄存器(访问属性为RWA)为保护寄存器,必须进入安全访问模式才能进行写操作。
* 对该寄存器先写入0x57,再写入0xA8,即可进入安全访问模式.
* 并且限时约16个主

本文深入探讨了CH582M开发板的系统时钟配置,通过分析官方例程中的时钟初始化函数,揭示了其如何将时钟设置为60MHz的过程,并详细解释了相关代码和参数含义。
最低0.47元/天 解锁文章
4169

被折叠的 条评论
为什么被折叠?



