RCC学习笔记

编程入门 行业动态 更新时间:2024-10-28 16:18:05

RCC<a href=https://www.elefans.com/category/jswz/34/1770117.html style=学习笔记"/>

RCC学习笔记

HSE部分:
其实固件库函数都已写好了,要勤快点查阅才行。

#include "bsp_rccclkconfig.h"void HSE_SetSysClk( uint32_t RCC_PLLMul_x )
{ErrorStatus HSEStatus; //声明HSE状态变量//设定的两个状态值 ERROR=1,SUCCESS=!ERROR{//变量声明一定要贴着大括号// 把RCC 寄存器复位成复位值,刚上电的状态 RCC_DeInit();	// 使能 HSE RCC_HSEConfig(RCC_HSE_ON);HSEStatus = RCC_WaitForHSEStartUp();if( HSEStatus == SUCCESS )    // 使能预取指FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);// 配置三个总线的分频因子RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);// 配置 PLLCLK = HSE * RCC_PLLMul_x,PLL关闭情况下才能配置参数RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);// 使能PLLRCC_PLLCmd(ENABLE);// 等待PLL稳定while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );// 选择系统时钟RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while( RCC_GetSYSCLKSource() != 0x08 );}else{/* 如果HSE 启动失败,用户可以在这里添加处理错误的代码 */}
}void HSI_SetSysClk( uint32_t RCC_PLLMul_x )
{__IO uint32_t HSIStatus = 0;// 把RCC 寄存器复位成复位值RCC_DeInit();	// 使能 HSI RCC_HSICmd(ENABLE);HSIStatus = RCC->CR & RCC_CR_HSIRDY;if( HSIStatus == RCC_CR_HSIRDY ){// 使能预取指FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PCLK2Config(RCC_HCLK_Div1);// 配置 PLLCLK = HSE * RCC_PLLMul_xRCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_x);// 使能PLLRCC_PLLCmd(ENABLE);// 等待PLL稳定while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );// 选择系统时钟RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while( RCC_GetSYSCLKSource() != 0x08 ); //确定切换完毕后返回//0x00 HSI作为系统时钟//0x04 HSE作为系统时钟//0x08 PLL作为系统时钟}else{/* 如果HSI 启动失败,用户可以在这里添加处理错误的代码 */}
}//MCO时钟输出
void MCO_GPIO_Config()
{GPIO_InitTypeDef  GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; //复用模式推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);	
}

实验观察到的现象,8M晶振直接出来波形并不好,经过锁相环以后波形完美。
锁相环的工作原理是检测输入信号和输出信号的相位差,并将检测出的相位差信号通过鉴相器转换成电压信号输出,经低通滤波器滤波后形成压控振荡器的控制电压,对振荡器输出信号的频率实施控制,再通过反馈通路把振荡器输出信号的频率、相位反馈到鉴相器。

HSI部分:
要修改的部分:

1.HSI使能部分

2.等待部分直接操作寄存器

HSIStatus=RCC-> & RCC_ CR_HSIRDY

3.配置锁相环时钟为2分频

好了RCC部分学完了,感觉进度有点慢。以后要加快进度了。

更多推荐

RCC学习笔记

本文发布于:2024-03-06 11:11:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715174.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:学习笔记   RCC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!