[其他ST产品] STM32 RCC配置时钟 MCO输出实验

[复制链接]
2025|45
 楼主| 过期的塔头 发表于 2022-8-24 16:17 | 显示全部楼层
RCC->CFGR|=4<<24;    ,

RCC_CFGR中第24-26位置为100,MCO输出SYSCLK时钟信号
335786305de77e7c4a.png
 楼主| 过期的塔头 发表于 2022-8-24 16:18 | 显示全部楼层
同理:HSE、HSI、PPL/2的MCO输出代码

//RCC->CFGR|=7<<24;     /* PLL 2分频后输出 */

//RCC->CFGR|=6<<24;     /* HSE输出   */   

//RCC->CFGR|=5<<24;     /*  HSI输出  */
 楼主| 过期的塔头 发表于 2022-8-24 16:19 | 显示全部楼层
3、信号输出  

生成代码编译后烧写至芯片内,通过示波器显示如下图:

    MCO输出SYSCLK时钟信号                 MCO输出HSE时钟信号

    399426305def21dc4a.png 844716305def91861d.png
 楼主| 过期的塔头 发表于 2022-8-24 16:20 | 显示全部楼层
4、基于库函数的MCO输出代码

基于库函数的代码直接调用固件库中的函数固件库中对每个所调用的函数都有专门的解释及使用说明,不在赘述。
 楼主| 过期的塔头 发表于 2022-8-24 16:21 | 显示全部楼层
  1. void RCC_Init(void)
  2. {
  3.         ErrorStatus HSEStartUpStatus;             /* 枚举型变量 */
  4.                 RCC_DeInit();                           /*重置RCC  */
  5.                 RCC_HSEConfig(RCC_HSE_ON);                /* HSE使能 */
  6.                 HSEStartUpStatus=RCC_WaitForHSEStartUp();                   /* 等待HSE起振 */
  7.                 if(HSEStartUpStatus==SUCCESS)                   /* 判断HSE起振成功 */
  8.                 {
  9.                
  10.                    RCC_HCLKConfig(RCC_SYSCLK_Div1);                   /* 设置AHB时钟HCLK */
  11.                    RCC_PCLK1Config(RCC_HCLK_Div2);                   /*  设置低俗APB1时钟PLCK1*/
  12.                    RCC_PCLK2Config(RCC_HCLK_Div1);                   /*  设置高速APB2时钟PLCK2*/
  13.                    RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);      /* 6倍频 */
  14.                 }       
  15.                 else
  16.          {
  17.                             /*do nothing*/
  18. }
  19.                        
  20.                        
  21.                 RCC_PLLCmd(ENABLE);                   /* PLL使能 */
  22.                 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)       /* 检查使能标志位 */
  23.                 {
  24.                 }
  25.                 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);       /* PLLCLK作为SYSCLK */
  26.                 while (RCC_GetSYSCLKSource()!=0x08) /* 判断SYSCLK是否设置成功
  27.                                             0x08意思是PLL作为系统时钟 */
  28.                 {
  29.                 }
  30. }



  31. void MCO_GPIO_Config(void)                   /* GPIO配置 */
  32. {               
  33.     GPIO_InitTypeDef GPIO_InitStruct;                   /* 结构体定义 */
  34.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);        /* GPIOA使能 */
  35.     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;                   /* PA8 */
  36.     GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;                   /* 推挽输出 */
  37.     GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;                   /*  50MHz*/
  38.     GPIO_Init(GPIOA,&GPIO_InitStruct);                   /*初始化GPIOA  */
  39. }

  40.        
  41. int main(void)
  42. {
  43.     RCC_Init();
  44.     MCO_GPIO_Config();                  
  45.     RCC_MCOConfig(RCC_MCO_SYSCLK);                   /* MCO输出SYSCLK */
  46.        
  47. }

juliestephen 发表于 2022-9-8 08:21 | 显示全部楼层
如何将MCO1输出50MHz时钟
wilhelmina2 发表于 2022-9-8 14:44 | 显示全部楼层
使用外部时钟还需要配置PA8吗      
primojones 发表于 2022-9-10 19:10 | 显示全部楼层
引脚可以输出系统时钟的分频吗  
dspmana 发表于 2022-9-11 19:05 | 显示全部楼层
stm32 MCO输出时钟      
tifmill 发表于 2022-9-11 20:17 | 显示全部楼层
如何测量stm32的系统主频  
houjiakai 发表于 2022-11-5 10:39 | 显示全部楼层
stm32 引脚可以输出系统时钟的分频吗
macpherson 发表于 2022-11-5 12:05 | 显示全部楼层
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
Jacquetry 发表于 2022-11-5 16:18 | 显示全部楼层
使用外部时钟还需要配置PA8吗?
Stahan 发表于 2022-11-6 19:41 | 显示全部楼层
stm32 MCO输出时钟
fengm 发表于 2022-11-6 20:08 | 显示全部楼层
STM32 内部时钟输出PA8(MCO) 如何实现  
Henryko 发表于 2022-11-6 21:05 | 显示全部楼层
引脚可以输出系统时钟的分频吗?
minzisc 发表于 2022-11-9 17:22 | 显示全部楼层
STM32还可以选择一个时钟信号输出到MCO1脚(PA8)和MCO2脚(PC9)上,可以选择为PLL输出的1~5分频、HSI、HSE、或者系统时钟。
MessageRing 发表于 2022-11-9 20:08 | 显示全部楼层
引脚可以输出系统时钟的分频吗
updownq 发表于 2022-11-10 11:56 | 显示全部楼层
STM32的MCO引脚是输出内部时钟的,请问输出内部时钟有什么意义
sdCAD 发表于 2022-11-10 14:53 | 显示全部楼层

stm32 MCO输出时钟,怎么在MDK软件里看到引脚PA.8的输出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部