当前位置: 首页 > news >正文

关于MCO使用配置

关于MCO,相关介绍如下图:

image

 

针对以上8个时钟信号作为MCO时钟输出的配置如下:
1、系统时钟输出
此时MCO引脚(PA8)输出时钟频率即系统主频的大小

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_SYSCLK);

 

2、HSI时钟输出
此时MCO引脚(PA8)输出时钟频率即内部高速时钟(HSI)的大小,一般为8MHz

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_HSI);

 

3、HSE时钟输出
此时MCO引脚(PA8)输出时钟频率即外部高速时钟(HSE)的大小

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_HSE);

 

4、PLL时钟经过2分频输出
关于PLL时钟介绍以及时钟来源参考下图介绍

image

image

 PLL时钟一般在配置系统主频时进行配置,一般默认使用PLL时钟作为系统时钟

image

MCO输出配置如下:

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);

 

5、PLL2时钟输出
关于PLL2时钟,其时钟树框图如下:

image

 可通过时钟控制寄存器和时钟配置寄存器2配置开启PLL2时钟,注意关于PLL2倍频因子以及分频因子配置,需要在PLL2关闭才可写入

image

MCO输出PLL2时钟配置如下:

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//    RCC->CFGR2 |= (uint32_t)(RCC_PREDIV2_Div2 | RCC_PLL2Mul_6 );
//    RCC->CTLR |= ((uint32_t)RCC_PLL2ON);
RCC_PLL2Cmd(DISABLE);RCC_PREDIV2Config(RCC_PREDIV2_Div2);RCC_PLL2Config(RCC_PLL2Mul_6);RCC_PLL2Cmd(ENABLE);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_PLL2CLK);

 

6、PLL3时钟输出
关于PLL3时钟,其时钟树框图如下:

image

同PLL2时钟配置一致,PLL3时钟关于PLL2倍频因子以及分频因子配置,需要在PLL3关闭才可写入

image

 MCO输出PLL3时钟配置如下:

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//    RCC->CFGR2 |= (uint32_t)(RCC_PREDIV2_Div2 | RCC_PLL3Mul_4 );
//    RCC->CTLR |= ((uint32_t)RCC_PLL3ON);
RCC_PLL3Cmd(DISABLE);RCC_PREDIV2Config(RCC_PREDIV2_Div2);RCC_PLL3Config(RCC_PLL3Mul_4);RCC_PLL3Cmd(ENABLE);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_PLL3CLK);

 

7、PLL3时钟经过2分频输出
程序配置如下:

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);//    RCC->CFGR2 |= (uint32_t)(RCC_PREDIV2_Div2 | RCC_PLL3Mul_4 );
//    RCC->CTLR |= ((uint32_t)RCC_PLL3ON);
RCC_PLL3Cmd(DISABLE);RCC_PREDIV2Config(RCC_PREDIV2_Div2);RCC_PLL3Config(RCC_PLL3Mul_4);RCC_PLL3Cmd(ENABLE);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_PLL3CLK_Div2);

 

8、XT1 外部 3-25MHz 振荡器(用于以太网)
程序配置如下:

    GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);/* MCO Output GPIOA 8 */RCC_MCOConfig(RCC_MCO_XT1);

 

http://www.jsqmd.com/news/3388/

相关文章:

  • 网络运维 --- ntp服务器
  • 向量那点事儿
  • c++输入输出详解
  • docker/docker compose/k8s
  • 中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱
  • PySpark - Get the number of rows
  • RK3588-ubuntu server - 详解
  • 一文教你上手 Geometric Glovius 6.0:安装、授权与首个项目演示
  • 32单片机+free rtos移植CJSON库函数主要流程
  • Gitee如何重塑中国开发者生态:本土化创新与数字化转型的双重奏
  • 从MESA模型到锁升级:synchronized性能逆袭的底层逻辑
  • 输入输出接口
  • Go语言中的信号捕获与优雅退出:SIGINT、SIGTERM和SIGKILL详解 - 若
  • (二)3.1.9 生产“稳”担当:Apache DolphinScheduler Worker 服务源码全方位解析
  • 实用指南:虚拟机搭建 DHCP 服务器 + 配置 DHCP 中继:完整实操指南
  • 完整教程:生产环境实战:Spring Cloud Sleuth与Zipkin分布式链路追踪实践
  • ibero 2025.1 Run PROGRAM_SPI_IMAGE_Action
  • 训练“系统级思维”,听时序数据库 IoTDB Committer 说说从设计到应用的成长
  • 【设计模式】状态模式 - 详解
  • Kendo UI for jQuery 2025 Q3新版亮点 - AI 智能网格与全新表单体验
  • 关于gradle项目启动
  • 事倍功半是蠢蛋55 ctrl+shift+f 每次搜索都按倒繁体
  • PHP 线上环境 Composer 依赖包更新部署指南-简易版 - 教程
  • 完整教程:Ubuntu 安装和配置 Anaconda
  • DevExpress WPF中文教程:如何使用虚拟源将WPF数据网格绑定到任何数据源?
  • Ini文件的读写
  • 数据跨境传输解决方案助力企业安全合规高效流通
  • 养成合成小游戏抖音快手微信小程序看广告流量主开源 - 实践
  • 题解:P9454 [ZSHOI-R1] 巡城
  • QuestaSim奔溃后再次打开无法仿真