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);
}
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。 安 发表于 2018-9-13 17:09
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。
好的我试一试 安 发表于 2018-9-13 17:09
GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_MCO);
添加一句话,试试。
我的是103系列的好像没有这个函数吧编译不过 小肥羊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); 外部电路要参照STM32开发板的STLINK部分。然后,确认是用CUBEMX 还是用标准库开发,这个函数不通 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,则输出的波形会失真。 HSI时钟开启了没有? feixiang20 发表于 2018-9-13 23:22
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
...
这个解释很清晰
感觉应该能搞定 feixiang20 发表于 2018-9-13 23:22
STM32的PA.8引脚具有复用功能——时钟输出(MCO), 该功能能将STM32内部的时钟通过PA.8输出.
操作流程:
...
我输出是内部8M啊我看代码也没有错
页:
[1]