@Gfan 参加活动
极海B站有工程师笔记经验分享,项目案例等短视频,是平时工作之中碎片时间用于提高自己技术的好去处。今天学习极海B站的APM32技术微课栏目的MCO课程《【APM32技术微课 | 第24 讲】APM32的MCO,你知道吗》链接如下:https://www.bilibili.com/video/BV1bk9sYfEdb/ MCO,main clock output的简称,主时钟输出功能。该功能外设可以将片内时钟、外部时钟、PLL时钟或主时钟信号连接到指定引脚之上。 MCO功能的典型应用有二: 上述两点是非常实用的两点。我平时在首次配置MCU PLL时钟时,会通过示波器观察输出频率,以确定我的配置是否正确,有效。
在极海B站技术微课上,指导老师使用APM32F411为例进行了代码分享,我查看了我尚在邮寄中的APM32E030 SDK的示例工程,极海SDK已经做了兼容设计。虽然讲解的是APM 32F411, 但适用APM32全系列。MCO实验的示例参考极海官网的APM32E030_SDK V1.0.2(20250603发布),在此附上源代码:
- /*!
- * [url=home.php?mod=space&uid=247401]@brief[/url] Selects clock ouput source
- *
- * @param cocClock: specifies the clock source to output
- * This parameter can be one of the following values:
- * [url=home.php?mod=space&uid=2817080]@ARG[/url] RCM_COC_NO_CLOCK: No clock selected.
- * @arg RCM_COC_HSI14: HSI14 oscillator clock selected.
- * @arg RCM_COC_LSI: LSI oscillator clock selected.
- * @arg RCM_COC_LSE: LSE oscillator clock selected.
- * @arg RCM_COC_SYSCLK: System clock selected.
- * @arg RCM_COC_HSI: HSI oscillator clock selected.
- * @arg RCM_COC_HSE: HSE oscillator clock selected.
- * @arg RCM_COC_PLLCLK_DIV_2: PLL clock divided by 2 selected.
- *
- * @retval None
- */
- void RCM_ConfigCOC(RCM_COCCLK_T cocClock)
- {
- RCM->CFG1_B.MCOSEL = cocClock;
- }
- /*!
- * @brief Clock output init
- *
- * @param None
- *
- * @retval None
- *
- */
- void ClockOutputInit()
- {
- GPIO_Config_T gpioconfig;
- /* Connect RCM Clock output */
- GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_8, GPIO_AF_PIN0);
- gpioconfig.mode = GPIO_MODE_AF;
- gpioconfig.outtype = GPIO_OUT_TYPE_PP;
- gpioconfig.pin = GPIO_PIN_8;
- gpioconfig.pupd = GPIO_PUPD_NO;
- gpioconfig.speed = GPIO_SPEED_50MHz;
- GPIO_Config(GPIOA, &gpioconfig);
- /* set SYSCLK as COC source */
- RCM_ConfigCOC(RCM_COC_SYSCLK);
- }
至于实验效果,待我收到APM32E030后,定为大家奉上。
|