PREDIV与PLLMUL配置应用笔记
下图为CH32V305/307和CH32F205/207时钟树框图,在此,以CH32V307VCT6芯片,外置25MHz晶振为例,简述图中PREDIV与PLLMUL的配置方法,最终实现144MHz系统主频。

外置晶振信号可直接输入PREDIV1与PLLMUL,也可先通过PREDIV2与PLL2MUL后,再输入PREDIV1与PLLMUL。当外置晶振频率为25MHz时,可先使用PREDIV2进行5分频,然后使用PLL2MUL进行8倍频,再使用PREDIV1进行5分频,最后使用PLLMUL进行18倍频,即SYSCLK(144MHz)=25/5(PREDIV2/5)*8(PLL2MUL*8)/5(PREDIV1/5)*18(PLLMUL*18)。
时钟的修改涉及两个文件,分别是system_ch32v30x.c与ch32v30x.h,首先修改头文件中HSE_VALUE宏定义的值为外置晶振频率。
1. #define HSE_VALUE ((uint32_t)25000000) /* Value of the External oscillator in Hz */
然后在system_ch32v30x.c文件中找到SetSysClockTo144_HSE函数,第一步,在配置RCC_CFGR0前,先配置PREDIV2为5分频与PLL2MUL为8倍频,使能PLL2MUL并等待其就绪;第二步,在使能PLLMUL前,配置PREDIV1的时钟源为PLL2MUL且为5分频。
1. /* PLL configuration: PLLCLK = HSE * 18 = 144 MHz */
2. RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE | RCC_PLLMULL));
3.
4. RCC_PREDIV2Config(RCC_PREDIV2_Div5);
5. RCC_PLL2Config(RCC_PLL2Mul_8);
6. RCC_PLL2Cmd(ENABLE);
7. while( (RCC->CTLR & (1<<27)) == 0 )
8. {
9. }
10.
11. #ifdef CH32V30x_D8
12. RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18);
13. #else
14. RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18_EXTEN);
15. RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div5);
16. #endif
17.
18. /* Enable PLL */
19. RCC->CTLR |= RCC_PLLON;
20. /* Wait till PLL is ready */
21. while((RCC->CTLR & RCC_PLLRDY) == 0)
22. {
23. }
除此之外,在使用USB HS接口时,还应对USBHS_RCC_Init函数做进一步的调整,首先配置USBHS时钟为5分频,然后设置USBHSPLL参考时钟为5MHz。
1. RCC_USBHSConfig( RCC_USBPLL_Div5 );
2. RCC_USBHSPLLCKREFCLKConfig( RCC_USBHSPLLCKREFCLK_5M );
其他系列芯片不再一一赘述,使用时应首先查阅时钟树框图,参考应用手册中具体的配置要求,并结合上述方法进行操作。最终还可以通过MCO将SYSCLK进行输出,使用示波器进行简单的测量。

PREDIV与PLLMUL配置应用笔记的更多相关文章
- SVN版本库(访问权限)配置实例笔记
http://blog.csdn.net/zjianbo/article/details/8578297 SVN版本库(访问权限)配置实例笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. ...
- nginx 配置rewrite 笔记
nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ...
- Chapter 2. OpenSSL的安装和配置学习笔记
Chapter 2. OpenSSL的安装和配置学习笔记 2.1 在linux上面安装OpenSSL我还是做点No paper事情比较在行,正好和老师的课程接轨一下.以前尝试过在Windows上面安装 ...
- centos6 安装配置ss笔记
2018-05-17 centos6 安装配置ss笔记 操作环境:Centos 6 x86_64 bbr 服务器地址:美国 1.准备VPS 在https://www.bwh1.net可购买,购买时已默 ...
- redis 安装配置学习笔记
redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://downl ...
- Celery配置实践笔记
说点什么: 整理下工作中配置celery的一些实践,写在这里,一方面是备忘,另外一方面是整理成文档给其他同事使用. 演示用的项目,同时也发布在Github上: https://github.com/b ...
- FtpServer穿透内网访问配置踩笔记
FtpServer穿透内网访问配置踩笔记 引言 FtpServer是服务器文件远程管理常用方式. 以前在局域网配置Ftp服务器以及使用公网上的Ftp服务均未碰到问题,固未对Ftp传输进行深入了解. 然 ...
- SpringBoot多重属性文件配置方案笔记
SpringBoot多重属性文件配置方案笔记 需要重写PropertyPlaceholderConfigurer 同时要忽略DataSourceAutoConfiguration @SpringBoo ...
- Ubuntu构建Docker私有仓库(Repository) 配置过程笔记
一.准备: 1.服务器(或者虚拟机2台,我的服务环境[ 阿里云服务器-Ubuntu 1804 +百度云-Ubuntu 1604]) 2.有效镜像(我这里以上一篇随笔镜像作为有效镜像https://w ...
- Elasticsearch的配置学习笔记
文/朱季谦 Elasticsearch是一个基于Lucene的搜索服务器.它提供一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,Elasticsearch是用Java语言开发的. ...
随机推荐
- 在void 中使用return的意思
在定义的void函数里如果想要提前终止函数 格式为 return; 如果 在有返回值的函数中 格式为: return+值(0 -1 ......) 但如果在void 函数中写return 0 ; 则会 ...
- Python全栈开发工程师 day57 jQuery
二.jQuery样式操作标签样式操作<!DOCTYPE html><html lang="en"><head> <meta charset ...
- Java:Should I use a `HashSet` or a `TreeSet` for a very large dataset?
这是StackOverflow上一个有意思的提问,记录一下. 原地址在这 翻译: 对于大型数据集,应该使用"哈希集"还是"树集"? (因为HashTable有着 ...
- 18年CCCC赛后总结
C4赛后总结: 我正式入坑以来,大约5个月,这也是我第一次出去参与这样正式的比赛,其实比赛结果并不尽人意,但有很多还是需要记录下来的,通过这次比赛的确获得了很多的比赛经验: 一赛前: 其实赛前的状态, ...
- 把ChatGPT调教成机器学习专家,以逻辑回归模型的学习为例
大家好我是章北海mlpy 看到一个蛮有意思的项目,可以把ChatGPT调教成导师 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor 可以根据你选择的学习 ...
- List 集合手动分页的方法总结
前言 在工作中难免会遇到,将组装的集合数据进行分页处理,现在我将自己手动分页的三种方法进行总结,有不对的地方敬请大家批评指正! 一.数据准备 // 当前页 int pageIndex = 1; // ...
- union()并集intersection()交集difference()差集
union并集,即:合并 intersection()交集 difference()差集 qs1=Course.objects.filter(price__get=240) qs2=Course.ob ...
- distinct()去重
distinct()去重 Student.objects.all().distinct()
- Vue2 去除定时器之常用三种方式及特殊方式
一般情况去除定时器的常用的三种方式方法:创建一下三种钩子函数,一般有其中一个就足以实现清除定时器的效果beforeDestroy(){ beforeDestroy(){ // 离开当前路由前的操作 c ...
- Hugging News #0519: 我们把 HuggingChat 开源了
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...