- 博客(0)
- 资源 (2)
- 收藏
- 关注
STM32-16-CAN-正常模式YMXB-0402.rar
学习STM32 的CAN模块,最核心 的就是系统时钟的配置问题,代码如下:
/**************************************************************/
//程 序 名: RCC_Config()
//开 发 者: 火工头陀
//入口参数: 无
//功能说明: 系统时钟配置
//**************************************************************/
void RCC_Config(void)
{
ErrorStatus HSEStartUpStatus; //定义结构体
/* RCC system reset(for debug purpose)将外设 RCC寄存器重设为缺省值 */
RCC_DeInit();
///* Enable HSE 设置外部高速晶振(HSE)*/
//RCC_HSEConfig(RCC_HSE_ON);
/* Enable HSE 设置外部高速晶振(HSE)*/
//外部晶体振荡器被旁路,参照《数据手册》6.2.1
//这样设置是因为ufun学习板的原理图就是这样设计的
//RCC_HSEConfig(RCC_HSE_Bypass);
RCC_HSEConfig(RCC_HSE_ON);//亚明小板设置方法 (最常用的无源晶振设置方法)
/* Wait till HSE is ready 等待 HSE 起振*/
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if (HSEStartUpStatus == SUCCESS)
{
/* Enable Prefetch Buffer 预取指缓存使能*/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* Flash 2 wait state 设置代码延时值*/
FLASH_SetLatency(FLASH_Latency_2);
/* HCLK = SYSCLK 设置 AHB 时钟(HCLK)= 72 MHz*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK1 = HCLK/2 设置低速 AHB 时钟(PCLK1) = 72/2 = 36 MHz*/
RCC_PCLK1Config(RCC_HCLK_Div2);
/* PCLK2 = HCLK 设置高速 AHB 时钟(PCLK2)= 72 MHz*/
RCC_PCLK2Config(RCC_HCLK_Div1);
//根据外接晶振设置总线频率、PLL 时钟源、倍频系数
/* PLLCLK = 12MHz * 6 = 72 MHz 设置 PLL 时钟源及倍频系数*/
//RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
/* PLLCLK = 8MHz * 9 = 72 MHz 设置 PLL 时钟源及倍频系数*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* Enable PLL 使能或者失能 PLL*/
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready 等待指定的 RCC 标志位设置成功 等待PLL初始化成功*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
/* Select PLL as system clock source 设置系统时钟(SYSCLK) 设置PLL为系统时钟源*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source 等待PLL成功用作于系统时钟的时钟源*/
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
}
2020-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人