static void SetSysClockTo72(void)

{

__IO uint32_t StartUpCounter = 0, HSEStatus = 0;

/* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/

/* Enable HSE */

RCC->CR |= ((uint32_t)RCC_CR_HSEON);//打开HSE

/* Wait till HSE is ready and if Time out is reached exit */

do

{

HSEStatus = RCC->CR & RCC_CR_HSERDY;

StartUpCounter++;

} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));//等待HSE就绪

if ((RCC->CR & RCC_CR_HSERDY) != RESET)

{

HSEStatus = (uint32_t)0x01;

}

else

{

HSEStatus = (uint32_t)0x00;

}

if (HSEStatus == (uint32_t)0x01)

{

/* Enable Prefetch Buffer */

FLASH->ACR |= FLASH_ACR_PRFTBE;

/* Flash 2 wait state */

FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);

FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;    //先不管

/* HCLK = SYSCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

/* PCLK2 = HCLK */

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;

/* PCLK1 = HCLK /2*/

RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;//设置三个时钟的分频系数,确定其和系统时钟的关系

#ifdef STM32F10X_CL

/* Configure PLLs ------------------------------------------------------*/

/* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */

/* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */

RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |

RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);

RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |

RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);

/* Enable PLL2 */

RCC->CR |= RCC_CR_PLL2ON;

/* Wait till PLL2 is ready */

while((RCC->CR & RCC_CR_PLL2RDY) == 0)

{

}

/* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */

RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |

RCC_CFGR_PLLMULL9); //确定PLL的倍频系数和时钟来源

#else

/*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |

RCC_CFGR_PLLMULL));//将PLLSRC,PLLXTPRE,PLLMULL对应的位置零

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);// 或符号”|”是前后两种状态同时取的意思

#endif /* STM32F10X_CL */

/* Enable PLL */

RCC->CR |= RCC_CR_PLLON;//PLL时钟打开

/* Wait till PLL is ready */

while((RCC->CR & RCC_CR_PLLRDY) == 0)

{

}

/* Select PLL as system clock source */

RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;//将PLL作为系统时钟来源

/* Wait till PLL is used as system clock source */

while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)

{

}

}

else

{ /* If HSE fails to start-up, the application will have wrong clock

configuration. User can add here some code to deal with this error */

}

}

#endif

static void SetSysClockTo72(void)的一些理解相关推荐

  1. static关键字 void和void指针 函数指针

    static关键字 1.作用于变量:    用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指 ...

  2. 关于空指针(指针指向为NULL)和void类型的指针的理解

    正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1) ...

  3. 关于void (visit)(const ElemType )的理解

    *关于void (visit)(const ElemType &)的理解 visit是一个函数指针,指向一个具体的函数,我们在具体使用visit时通过调用它(visit)的函数来调用它(vis ...

  4. C/C++中的函数中的void和void* 理解

    C/C++中的void和void* 一.void void关键字表示"空类型"的概念.但是,这里的"空类型"不表示"任意类型",而是表示不存 ...

  5. Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类

    Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...

  6. typedef interrupt void (*PINT)(void)的分析

    今天写程序时,在DSP2833x_PieVect.h看到typedef interrupt void (*PINT)(void)突然一愣,上网查了下发现在这是加了interrupt 中断关键字的函数指 ...

  7. [转]C/C++语言void及void指针深层探索

    1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2 ...

  8. C/C++语言void及void指针深层探索 .

    1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2 ...

  9. void和void*详解 v2

    void的含义 void即"无类型",void *则为"无类型指针",可以指向任何数据类型. void指针使用规范 ①void指针可以指向任意类型的数据,亦即可 ...

最新文章

  1. 盘点丨2017年人工智能带火了哪些词
  2. 脑洞:如果地府需要一个后台管理系统,你会如何设计?
  3. 在Perl程序中显示进度条之多姿多彩的自写代码
  4. as3 physaxe 2d 物理引擎
  5. (转)浏览器兼容的JS写法总结
  6. mount.nfs: Stale file handle的解决方法
  7. getvalue参数计数不匹配_数据人:不懂业务,分析就仅仅只是提数
  8. 桌面无法显示计算机,win10 桌面计算机无法显示
  9. 随记:PNP和NPN三极管区别
  10. Spring Cloud 出现No instances available for user-service异常
  11. android格式化外置u盘,Android5.x+ 格式化外部存储(u盘, sdcard)的方法
  12. 计算机毕业设计SSM高校第二课堂管理系统【附源码数据库】
  13. 深度学习从入门到精通——MTCNN人脸侦测算法
  14. 仙侣奇缘2 无法 启动mysql_仙侣奇缘2服务端
  15. 全国计算机java语言程序设计_2018年全国计算机等级考试二级教程:Java语言程序设计(2018年版)...
  16. 2023美赛思路2023美国大学生数学建模竞赛思路
  17. 【2020年4月9我和小峰子的聊天】
  18. 怎么找外贸客户之海关数据
  19. EXCEL与地图无缝结合,实现地址解析,标注联动更新
  20. 巨人之后的史蒂夫·鲍尔默和蒂姆·库克

热门文章

  1. 互联网1分钟 | 0110 腾讯联手拳头游戏成立腾竞体育;百度智能云发布中国首款智能边缘计算产品BIE...
  2. 码神日志N0.1|专场邀请:深度解析音视频技术(内有福利哦~)
  3. upc组队赛5 Bulbs
  4. create-react-app 配置sass
  5. SQLServer镜像状态异常排查
  6. mkyaffs2image编译
  7. secureCRT配置ssh -x
  8. 研读代码必须掌握的五个Eclipse快捷键
  9. git初始化及关联远程仓库命令
  10. minio分布式集群示例: 4节点,每节点4块盘