打印
[APM32F4]

APM32F407 系统时钟输出

[复制链接]
482|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WuKaiLi|  楼主 | 2022-4-29 15:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 WuKaiLi 于 2022-4-29 15:24 编辑

#技术资源# #申请原创#
最近收获了一块APM32F407IG MINI板,在调试的过程中需要看到使用的一些时钟频率,如系统时钟,内部晶振时钟。我想到MCU一般都有相应的时钟输出功能(MCU Clock Out)。我觉得APM32F407也会有,所以查阅了一下它的手册,并将其配置出来了。本贴记录一下该过程。
1 MCU Clock Out功能概述
果不其然,在其6.3.4时钟树章节提及了其时钟输出功能,而且还分为MCO1/MCO2。
file://E:\02Work\Typora%20note\APM32F407%20%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%92%9F%E8%BE%93%E5%87%BA\image-20220429145147153.png?lastModify=1651216697
根据手册描述,APM32F407有两个微控制器时钟输出引脚, MCO1(PA8)和 MCO2(PC9), 当端口(PA8、 PC9)的相应的 GPIO 端口被配置为对应复用功能时,可通过配置RCM_CFG(时钟配置寄存器) 中的 MCOxSEL 位和 MCOxPSC 位, 选择时钟信号输出到 MCO 引脚。
我们提炼一下若将MCO1输出相应的时钟我们需要知道的关键信息:
a. PA8配置为对应复用功能
b.配置RCM_CFG(时钟配置寄存器) 中的 MCOxSEL 位和 MCOxPSC
下面一个章节将对实现MCO1输出HSI时钟。
2 MCU Clock Out代码实现
a.首先使能MCO1端口PA8的端口时钟
    /** Enable GPIOA Periph Clock */
    RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
b.配置PA8引脚为复用模式
    /** GPIOA initialization */
    GPIO_ConfigStructInit(&GPIO_ConfigStruct);
    GPIO_ConfigStruct.pin = GPIO_PIN_8;
    GPIO_ConfigStruct.mode = GPIO_MODE_AF;
    GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;
    GPIO_Config(GPIOA, &GPIO_ConfigStruct);
c.配置PA8复用模式为MCO1
GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_8, GPIO_AF_MCO);
d.配置MCO1输出时钟源及分频值
    /** MCO Out HSI 16MHz */
    RCM_ConfigMCO1(RCM_MCO1_SEL_HSICLK,RCM_MCO1_DIV_1);
综上,便是我们使用MCO1输出APM32F407的HSICLK的核心代码了。完整工程请查阅附件哦。
3 基础补充
在APM32F407中,整个系统的时钟源有: HSECLK、 LSECLK、 HSICLK、 LSICLK、 PLL1 和 PLL2。  
a. HSECLK是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
b. LSECLK是低速外部时钟,接频率为32.768kHz的石英晶体
c. HSI是高速内部时钟,RC振荡器,频率为16MHz。
d. LSICLK是低速内部时钟,RC振荡器,频率为40kHz。
e. PLL1 和 PLL2为锁相环倍频输出,一般由 HSICLK 或 HSECLK 振荡器作为它们的时钟源。



APM32F4xx_SDK_V1.1_RCM_MCO_HSI.zip

5.21 MB

APM32F407 MCO1输出HSICKL

使用特权

评论回复
沙发
skyred| | 2022-5-5 13:32 | 只看该作者
现在的片子,功能多,时钟多~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

37

帖子

1

粉丝