永乐国际官网下载
【有那么点详细的CW32学习笔记】看手册配置时钟树
时间: 2023-08-19 11:15:40 |   作者: 永乐国际官网下载

  作为单片机的启动时钟,并且该时钟频率被设置为48MHz。但讲解有疏漏,根据手册的描述,该48MHz仅为HSI频率,而非输送到时钟总线上的频率,在进入时钟总线之前,该时钟会被分频(也就是降低频率),在不进行任何配置的情况下,这个48M的

  这个图包含很多信息,但是图中的彩色字信息并非全部来自此图,更多的信息需要结合代码和寄存器描述来获得:

  1.HSI被配置为48M是通过启动文件中的SystemInit函数得知的。

  3.HSI之后的预分频器被设置为6分频,是通过查看指示该分频器的寄存器得知的。

  在经过SYSCTRL_CR0.SYSCLK寄存器选择之后,系统时钟SysClk会在经过分频后送入内核与各个外设,这一信息流程图与粉色箭头已经清晰展示。

  在手写箭头指向的方框中,有1、...、16的字样,表示该预分频器能够直接进行这些倍数的分频。所谓分频比如48M,6分频,其分频结果就是48M/6 = 8M,2分频就是24M,简单的除法。

  方框下方是该分频器对应的控制寄存器,寄存器的名字并不一定完全叫这个,但是这一个名字可以非常容易就被理解为预分频器控制相关的寄存器,该寄存器名字拆解版本是:SYS(系统)CTRL(控制)HSI.DIV(分频),这套命名系统是通用的,即使使用的是别的单片机,也能够准确的通过这套命名规则快速确认寄存器的功能。

  通过查看编程手册时钟与复位章节的寄存器描述,此寄存器DIV位的值默认为6。而HSI频率的设置则是该寄存[10:0]位的TRIM位决定的。

  只需要沿着紫色箭头的方向配置相关的寄存器,单片机就能够正常启动,但这一步并不是特别需要开发者亲自去做,芯片厂家提供的启动文件和库可以自动完成这一步。但不论怎么说RC振荡器的精度有限,且8M的速度放在48MHz主频的内核上也确实不够看,因此大部分时候,都需要用外部晶振提供的时钟,通过锁相环倍频之后达到48M,最后通过时钟线送入内核和外设。下面讲解怎么配置才能得到48MHz的高精度高速时钟信号:

  首先,电路板上需要有一个在范围内的晶体,晶体的两个引脚需要在外围电路的配合下连接到单片机的晶体输入引脚,同时IO需要工作在正确的工作模式。

  硬件部分准备完成了,接下来就是配置HSE和PLL相关的寄存器了。下面是相关的配置代码:

  然后配置PLL的分频系数,这将决定锁相环的输出频率,此处设置为1分频,也就是不分频。

  使能PLL功能,并告知用到的时钟源、时钟频率、倍频系数,这对应三个入口参数。

  将flash的等待周期设置为3个时钟周期,部分单片机有必要进行这一步操作,原因会在后面细说。

  仅展示主体部分,函数注释未列出,但CW32的时钟配置库函数注释相对来说很详细,推荐配置都写在函数注释里面,不懂得寄存器配置的小伙伴可以直接根据推荐进行配置,如果有更深入的需求,直接查看芯片手册对应的寄存器描述即可。后续的参数配置直接根据注释进行推荐配置即可,在PLL与HSE相关的寄存器配置完成之后,48M的时钟信号就已经产生了,只不过系统的时钟源还不是这个(记得那个梯形的选择器吗?),下一步就是切换时钟源,让系统工作在48M的频率下。切换时钟?我知道你很急,但是先别急,虽然正常的情况下确实可以直接切换了,但是CW32有个必须要格外注意的地方,那就是flash的配置。

  我们都知道,写的程序都存储在flash中,等到需要执行程序的时候,CPU会和flash进行通信,取出flash中的指令然后执行。问题来了,既然程序一定要通过某种通信方式传输到CPU,那这个通信传输的速度一定有个上限,这个上限就是flash的读写速度上限,当flash的实际读写速度与其允许的读写速度不匹配时,flash与CPU之间的通信就会出现一些明显的异常问题,之后就能够理解为CPU有高速取指令需求,但是flash无法在这个速度下跟上CPU的请求速度,这个通信就断了,程序就不动了。因此我们应该设置flash,让他多等几个时钟周期再响应,这样flash就能适应更高频率的读取请求,并且在此程序的配置中,需要使能预取指令和缓存功能,这两个功能能让flash与CPU更好地配合以实现单片机的高速运行。障碍都解决了,接下来真的只需要切换时钟即可。对比部分:这一部分会列出stm32f103c8t6单片机的标准库上电时钟设置代码进行对比。

  这里的条件编译,我选择最后一条,若需要上电设置为别的频率,只需要在同一个文件中把宏定义注释取消即可。

  下面列出设置时钟到72M函数的一部分,此函数与CW32的时钟初始化顺序几乎是一模一样,第一步是要将HSE使能并等待时钟稳定,之后设置PLL的参数,配置flash为2个等待周期,再使能PLL输出,等待PLL时钟稳定再切换时钟。

  可以看出,即使是不同的芯片,他们在大部分地方的操作是相同的,只是一些细节上有些许不同。

  1.本章简单展示了如何查找手册来配置寄存器,且再次强调库函数的本质就是操作寄存器。

  2.单片机都会有一个时钟树,时钟树的图可以在编程手册(不是数据表和内核手册)中找到。

  3.部分单片机想要工作在高工作频率下,需要设置flash等待时间并打开缓存和预取指令使能。

  饭盒派开发板,还有一个下载器!工作人员想得真周到!虽然是WCH家 的DAP下载器,速度较慢,对我们调试来说,也够用

  如下图,必须要格外注意的是,在flash download选项,要勾选RESTE AND RUN选项

  资料概述 /

  开发者扶持计划 /

  的第一天(搭建软件开发环境) /

  自举程序中使用的ISP协议 /

  内部资源结合软件编程实现电容式触摸按键有效触摸检测的方法。本指南的内容重点在于工作原理、软件检验测试过程以及调试指引。利用芯源半导体的

  电容式触摸按键设计指南 /

  】单片机启动库函数构成 /

  和GD32是两种不同的芯片系列,分别由WCH和GigaDevice公司推出,两者

© 2021 永乐国际官方网站登录-永乐官网下载 版权所有 | 备案号:粤ICP备12074344号