《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。
每一家MCU厂家的SDK写法和寄存器功能都有所不同,如果不熟悉的话就会配置错误,导致MCU运行不稳定。接下来就以APM32E030的手册和SDK,解读下高速时钟的配置和相关注意事项。
实现了解MCU的高速时钟要先看下用户手册。
高速时钟源分内部时钟源和外部时钟源:
内部时钟源
内部时钟包含 HSICLK(高速内部时钟信号)和 LSICLK(低速内部时钟信号)。HSICLK 时钟信号由内部 8MHz 的 RC 振荡器产生。不同芯片的 RC 振荡器频率不同,且同一颗芯片随着温度、电压的变化也会存在差异;每个芯片的 HSICLK 时钟频率在出厂前已经被厂家校准到 1%(25℃、VDD=VDDA=3.3V)
外部时钟源
外部时钟信号包括 HSECLK(高速外部时钟信号)和 LSECLK(低速外部时钟信号)。
外部的时钟源有两种:
外部晶体/陶瓷谐振器(常规的无源晶振)
用户外部时钟(有源晶振或者是其他芯片提供的时钟)

从APM32E030的用户手册可以看出,E030的最大主频也就是SYSCLK最大是72Mhz。系统时钟源可以从HSECLK(外部时钟的时钟),PLLCLK(PLL的时钟)、HSICLK(内部8M时钟)这三个中来选择。
HSECLK的输入时钟范围是4~32Mhz,可通过PLL的分频器和倍频器配置成PLL最大72M主频。HSICLK的时钟频率是8M,并且需要固定2分频到PLL的倍频器,最大16倍频,所以最大主频只能配到64Mhz.
系统时钟会再经过AHBPSC和APBPSC分频配置后到各外设。其中TMR的时钟需要注意,所有 TMRxCLK(定时器时钟)频率分配由硬件按以下 2 种情况自动设置:
如果相应的 APB 预分频系数是 1,定时器的时钟频率与所在 APB 总线频率一致。
否则,定时器的时钟频率被设为与其相连的 APB 总线频率的 2 倍
具体的寄存器在用户手册中,主要是时钟控制寄存器 1(RCM_CTRL1)和时钟配置寄存器 1(RCM_CFG1),具体功能可以查看用户手册。
除了RCM相关的寄存器,还有Flash的等待周期与预取使能与时钟相关需要注意。
理论部分主要就这些,更详细的建议查看用户手册,接下来是代码的相关部分。芯片上电实现会运行到启动文件,初始化完中断向量表后会进入到SystemInit()函数进行默认的时钟初始化。

在SystemInit()函数中会复位时钟相关的寄存器,然后进入SystemClockConfig();进行默认的时钟初始化。
SystemClockConfig()会根据宏定义来进行时钟初始化。

SDK默认配置的是8M外部无源晶振,配置主频72M。

如果需要配置更低的主频,可以直接通过选择不同的宏定义来直接切换。
如果使用的外部高速晶振是其他频率,比如4M、12M、16M等,就不能直接修改宏定义来配置主频,还需要做如下修改。
1、将HSE_VALUE改成实际的晶振频率,例如使用12M晶振就修改成:
#define HSE_VALUE ((uint32_t)12000000)

2、修改PLL倍频系数寄存器PLLMULCFG=4,对应数据手册可以看到是6倍频12M*6=72M

如果产品应用对时钟精度要求不高,想不接外部晶振,使用内部晶振倍频到64M的操作。
1、屏蔽默认的使用外部晶振的宏定义

2、编写如下使用内部晶振的时钟初始化函数,在main函数中调用
void SystemClock_HSI_PLL_Init()
{
RCM_Reset();
/* Enable HSI */
RCM_EnableHSI();
/* Wait until HSI is ready */
while (RCM->CTRL1_B.HSIRDY** == RESET);
FMC_EnablePrefetchBuffer();
FMC_SetWS2();
RCM_ConfigAHB(RCM_SYSCLK_DIV_1);
RCM_ConfigAPB(RCM_HCLK_DIV_1);
/* SYSCLKFreq = (HSI * 16) / 2 */
RCM_ConfigPLL(RCM_PLL_SEL_HSI_DIV2, RCM_PLLMF_16);
/* Enable PLL */
RCM_EnablePLL();
while (RCM->CTRL1_B.PLLRDY** == BIT_RESET);
/* Selct PLL as Sysclk */
RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_PLL);
while (RCM->CFG1_B.SCLKSWSTS != 0x02);
}
如果想要在程序运行中切换主频频率,比如将外部晶振72M的配置切换到36M
void SystemClock_HSE_PLL_Init()
{
uint32_t i;
/* Select HSI as System Clock at first */
RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_HSI);
/* Disable PLL */
RCM_DisablePLL();
/* Wait until Pll is ready */
while (RCM->CTRL1_B.PLLRDY** == SET);
RCM_ConfigHSE(RCM_HSE_OPEN);
for (i = 0; i < HSE_STARTUP_TIMEOUT; i++)
{
if (RCM->CTRL1_B.HSERDY**)
{
break;
}
}
if (RCM->CTRL1_B.HSERDY**)
{
FMC_EnablePrefetchBuffer();
FMC_SetWS2();
RCM_ConfigAHB(RCM_SYSCLK_DIV_1);
RCM_ConfigAPB(RCM_HCLK_DIV_1);
/* Config PLL source and multiplication factor
SYSCLKFreq = (HSE * 6) / 4 */
RCM_ConfigPLL(RCM_PLL_SEL_HSE, RCM_PLLMF_9);
RCM_ConfigCLKDIV(RCM_CLK_DIV_2);
/* Enable PLL */
RCM_EnablePLL();
while (RCM->CTRL1_B.PLLRDY** == BIT_RESET);
/* Selct PLL as Sysclk */
RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_PLL);
while (RCM->CFG1_B.SCLKSWSTS != 0x02);
}
else
{
/*可增加HSE启动失败的处理程序*/
}
}
如果要知道系统现在的时钟配置是多少,可以参考SDK中的RCB-->RCM_ClockSwitch 例程
/* Initiatate the usart */
APM_TINY_COMInit(COM1);
printf("sysSource = %s ", RCM_SYSCLK_SEL_TAB[RCM_ReadSYSCLKSource()]);
printf("sysClock = %" PRId32 " ", RCM_ReadSYSCLKFreq());
使用串口来打印当前时钟配置,注意这个打印是基于HSE_VALUE与实际相符的情况才是准确的,需要注意核对。
int main(void)
{
APM_TINY_LEDInit(LED2);
APM_TINY_LEDInit(LED3);
APM_TINY_PBInit(BUTTON_KEY1, BUTTON_MODE_EINT);
APM_TINY_PBInit(BUTTON_KEY2, BUTTON_MODE_EINT);
APM_TINY_COMInit(COM1);
ClockOutputInit();
printf("sysSource = %s ", RCM_SYSCLK_SEL_TAB[RCM_ReadSYSCLKSource()]);
printf("sysClock = %" PRId32 " ", RCM_ReadSYSCLKFreq());
SystemClock_HSE_PLL_Init();
for (;;)
{
Delay();
APM_TINY_LEDToggle(LED2);
}
}

上图就是启动文件不初始化时钟,在main中配置64M主频的测试结果。
注:文章作者在原帖中提供了例程文件,有需要请至原文21ic论坛下载
原文地址:https://bbs.21ic.com/icview-3459364-1-1.html
- 随机文章
- 热门文章
- 热评文章
- 130多件/套意大利庞贝文物长沙展出 呈现永恒之城魅力,130多件/套意大利庞贝文物长沙展出 呈现永恒之城魅力
- 15国百余位当代艺术家作品亮相山西,15国百余位当代艺术家作品亮相山西
- 《森多玛——金平管弦乐作品》唱片分享会举办,《森多玛——金平管弦乐作品》唱片分享会举办
- 著名油画家、中国美术学院原院长肖峰逝世,著名油画家、中国美术学院原院长肖峰逝世
- “柳宗元与广西”文献展在广西南宁开展,“柳宗元与广西”文献展在广西南宁开展
- 跨越时空的对话:浙江南湖“红船星河”闪耀雪域高原,跨越时空的对话:浙江南湖“红船星河”闪耀雪域高原
- “民歌大观”走进阿诗玛的故乡石林 天籁飘荡在世界遗产地,“民歌大观”走进阿诗玛的故乡石林 天籁飘荡在世界遗产地
- 东西问|魏家祥:以文明对话追求人类幸福,东西问|魏家祥:以文明对话追求人类幸福
- 《受到召唤·敦煌》兰州演出圆满成功:文艺与文物相互“凝视”,《受到召唤·敦煌》兰州演出圆满成功:文艺与文物相互“凝视”
- 世界遗产“西夏陵”的这些知识,你知道几个?,世界遗产“西夏陵”的这些知识,你知道几个?
- 1原创粤语音乐剧《大状王》内地火爆上演 业者望助力行业发展,原创粤语音乐剧《大状王》内地火爆上演 业者望助力行业发展
- 2一抹青色入夏来 “青·韵”特展亮相成都金沙,一抹青色入夏来 “青·韵”特展亮相成都金沙
- 3贵州省贵阳市市场监督管理局联合多部门开展集市检查 筑牢农村食品安全防线
- 4乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花,乌兰毛都草原上的札萨克图刺绣:指尖上盛开炽热之花
- 5正青春正时尚!广东推动粤剧“破圈”拥抱年轻一代,正青春正时尚!广东推动粤剧“破圈”拥抱年轻一代
- 62025世界制造业大会|中国电信成功举办“共筑AI底座 智领工业未来”发布会
- 7第二届中国(沈阳)喜剧电影周打造全民共享光影盛宴,第二届中国(沈阳)喜剧电影周打造全民共享光影盛宴
- 82025暑期档电影总票房破55亿 这三部必看!,2025暑期档电影总票房破55亿 这三部必看!
- 9为何买了车位,还要收管理费?
- 10中金岭南股东户数减少1199户,户均持股16.85万元
- 1《龙·中华民族的图腾》新书分享会在中国考古博物馆举办,《龙·中华民族的图腾》新书分享会在中国考古博物馆举办
- 22025上合组织国家电影节在重庆闭幕,2025上合组织国家电影节在重庆闭幕
- 3第十四届中国儿童艺术节嘉兴分会场开幕 见证央地合作硕果,第十四届中国儿童艺术节嘉兴分会场开幕 见证央地合作硕果
- 4捡到身份证怎么办?律师:交给公安机关最稳妥,捡到身份证怎么办?律师:交给公安机关最稳妥
- 5中国圆号重奏团德国巡演奏响东方旋律,中国圆号重奏团德国巡演奏响东方旋律
- 6上海迎来普希金文学大展,上海迎来普希金文学大展
- 7(八闽千姿)“刀”耕不辍 福州古稀匠人传承软木画,(八闽千姿)“刀”耕不辍 福州古稀匠人传承软木画
- 8700余中俄青少年齐聚牡丹江开展文化艺术交流,700余中俄青少年齐聚牡丹江开展文化艺术交流
- 9“良渚文明的五重奏”国风系列动画短视频全球发布,“良渚文明的五重奏”国风系列动画短视频全球发布
- 10小暑节气,也要吃饺子?,小暑节气,也要吃饺子?





