小肥羊dsf 发表于 2018-9-13 17:02:12

STM32 内部时钟输出PA.8(MCO) 如何实现

下面是我的实现代码但是PA8 还是没有输出试了几块板一样没有输出void MCO_GPIO_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,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_MCOConfig( RCC_MCO_HSI);
}

发表于 2018-9-13 17:09:43

GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。

小肥羊dsf 发表于 2018-9-13 17:11:55

安 发表于 2018-9-13 17:09
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。

好的我试一试

小肥羊dsf 发表于 2018-9-13 17:13:37

安 发表于 2018-9-13 17:09
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。

我的是103系列的好像没有这个函数吧编译不过

wenyangzeng 发表于 2018-9-13 19:02:37

小肥羊dsf 发表于 2018-9-13 17:13
我的是103系列的好像没有这个函数吧编译不过

在CubeMX里:
HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1);

GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

五哥1 发表于 2018-9-13 19:31:29

外部电路要参照STM32开发板的STLINK部分。然后,确认是用CUBEMX 还是用标准库开发,这个函数不通

feixiang20 发表于 2018-9-13 23:22:22

STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
   1)、设置PA.8为复用Push-Pull模式。
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   2)、选择输出时钟源。
    时钟的选择由时钟配置寄存器(RCC_CFGR)中的MCO位控制。
    RCC_MCOConfig(RCC_MCO);
    参数RCC_MCO为要输出的内部时钟:
      RCC_MCO_NoClock --- 无时钟输出
      RCC_MCO_SYSCLK --- 输出系统时钟(SysCLK)
      RCC_MCO_HSI --- 输出内部高速8MHz的RC振荡器的时钟(HSI)
      RCC_MCO_HSE --- 输出高速外部时钟信号(HSE)
      RCC_MCO_PLLCLK_Div2 --- 输出PLL倍频后的二分频时钟(PLLCLK/2)
注:由于STM32 GPIO输出管脚的最大响应频率为50MHz,如果输出频率超过50MHz,则输出的波形会失真。

发表于 2018-9-14 08:54:14

HSI时钟开启了没有?

lostworld1978 发表于 2018-9-24 19:23:50

feixiang20 发表于 2018-9-13 23:22
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
...

这个解释很清晰
感觉应该能搞定

小肥羊dsf 发表于 2019-3-29 09:15:49

feixiang20 发表于 2018-9-13 23:22
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
...

我输出是内部8M啊我看代码也没有错
页: [1]
查看完整版本: STM32 内部时钟输出PA.8(MCO) 如何实现