网站上的截图怎么做,杭州做网站多少钱,网站建设需要哪些必备文件,网站开发与管理专业的就业信息文章目录 一、有关时钟源二、系统时钟架构三、时钟树分析四、修改参数步骤1、设置外部晶振2、选择外部时钟源。3、 设置系统主频率大小4、修改PLL分频倍频系数 学习系统时钟架构和时钟树#xff0c;验证及学习笔记如下#xff0c;如有错误#xff0c;欢迎指正。主要记录了总… 文章目录 一、有关时钟源二、系统时钟架构三、时钟树分析四、修改参数步骤1、设置外部晶振2、选择外部时钟源。3、 设置系统主频率大小4、修改PLL分频倍频系数 学习系统时钟架构和时钟树验证及学习笔记如下如有错误欢迎指正。主要记录了总线下挂载外设总线时钟源以及系统时钟的配置。 一、有关时钟源
1、HXTAL高速外部时钟4到32MHz的外部振荡器可为系统提供更为精确的主时钟。它是板子焊接的外部晶振精度高但功耗比内部时钟较高
2、LXTAL低速外部时钟LXTAL晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟电路提供一个低功耗且精确的时钟源。
3、IRC8M高速内部8MHz时钟内部8MHz RC振荡器时钟简称IRC8M时钟拥有8MHz的固定频率设备上电后CPU默认选择的时钟源就是IRC8M时钟。它是芯片内部自带的时钟精度较低可以应用在对时钟要求不高的场景中
4、IRC28M高速内部28MHz时钟内部28MHz RC振荡器时钟 IRC28M 有一个固定的频率28MHz专门用作ADC时钟。
5、IRC48M高速内部48MHz时钟内部48M RC振荡器时钟IRC48M 有一个固定的频率48MHz用作USB时钟或者PLL时钟源。 6、IRC32K低速内部时钟
7、IRC40K低速内部时钟IRC40K RC振荡器时钟担当一个低功耗时钟源的角色它的时钟频率大约40 kHz为独立看门狗定时器和实时时钟电路提供时钟。
8、内部锁相环PLL对输入参考频率为4到32MHz时钟进行分频操作输出一个8-120 MHz的时钟输出。严格来说锁相环不算时钟源它是其他时钟源头配置而来。
剩下就是HXTAL时钟监视器、时钟预分频器、时钟多路复用器和时钟门控电路等。
AHB、 APB和Cortex®-M4时钟都源自系统时钟CK_SYS系统时钟的时钟源可以选择IRC8M、HXTAL或PLL。
做项目时需要确认该项目所用晶振为内部晶振还是外部晶振。
二、系统时钟架构 1以GD32F350系列为例Cortex-M4架构最高时钟频率为108MHz。 通过固件库的system_gd32f10x.c以及系统时钟架构可知 /* HXTAL is stable *//* AHB SYSCLK */RCU_CFG0 | RCU_AHB_CKSYS_DIV1;/* APB2 AHB/2 */RCU_CFG0 | RCU_APB2_CKAHB_DIV2;/* APB1 AHB/2 */RCU_CFG0 | RCU_APB1_CKAHB_DIV2;AHB总线为系统时钟的1分频即最高频率为108MHz。 APB1总线为系统时钟的2分频即最高频率为54MHz。 APB2总线为系统时钟的1分频即最高频率为54MHz。
2通过分析系统架构图可知
系统时钟分频情况。时钟总线(AHB、APB1、APB2)的所挂载的外设。 以TIMER1为例挂载的是APB1总线USART0挂载APB2总线。
三、时钟树分析 目标是找到TIMER5和USART0 从左往右分析最左侧的四个方框为四种时钟源。要选择一个时钟源。 以HXTAL为例。
1、选择外部HXTAL时钟源提供系统时钟频率。
2、PLLPRESEL选择外部晶振作为PLL时钟源经过PREDV分频PLLSEL选择外部晶振作为PLL时钟源经过PLL倍频得到CK_PLL
3、通过SCS选择PLL时钟源作为系统时钟CK_SYS。
4、CK_SYS系统时钟通过分频得到CK_AHB即为AHB总线的时钟频率。
5、 以TIMER1为例TIMER1挂载APB1总线APB1分频系数为2则TIMER1频率为AHB÷[apb1 prescaler/2]AHB
6、 以USART0为例USART0挂载APB2总线通过APB2分频得到CK_APB2频率直接提供USART0使用。
四、修改参数步骤
1、设置外部晶振
外部晶振时钟频率在gd32f30x.h文件中根据实际外部晶振频率修改参数。示例选择外部晶振12M其中HXTAL_VALUE即板子所焊接的外部晶振的宏定义。
/* define value of high speed crystal oscillator (HXTAL) in Hz */
#if !defined HXTAL_VALUE
#ifdef GD32F10X_CL
#define HXTAL_VALUE ((uint32_t)25000000) /*! value of the external oscillator in Hz */
#else
#define HXTAL_VALUE ((uint32_t)12000000) /* ! from 4M to 16M *! value of the external oscillator in Hz*/
#endif /* HXTAL_VALUE */
#endif /* high speed crystal oscillator value */
2、选择外部时钟源。
在system_gd32f3x0.c文件_SYS_OSC_CLK为系统时钟主频率选择宏定义使用外部晶振选择__HXTAL。
3、 设置系统主频率大小
在system_gd32f3x0.c文件中例如选择了72MHz作为时钟频率__SYSTEM_CLOCK_72M_PLL_HXTAL
4、修改PLL分频倍频系数
在函数system_clock_72m_hxtal()内修改。 修改前系统外部晶振HXTAL默认为8MHZ带入公式PLL HXTAL * 9 72 MHzPLL的倍频系数是9.
修改后系统外部晶振HXTAL为12M代入公式PLL倍频系数为6
五、验证系统时钟的准确性
通过系统函数获取时钟配置uint32_t rcu_clock_freq_get(rcu_clock_freq_enum clock)函数可用来获取时钟参数 获取APB1时钟uclk rcu_clock_freq_get(CK_APB1); 获取APB2时钟uclk rcu_clock_freq_get(CK_APB2); 获取CK_AHB时钟uclk rcu_clock_freq_get(CK_AHB); 获取CK_SYS时钟uclk rcu_clock_freq_get(CK_SYS)。
详细的系统时钟频率配置参考链接 GD32系列笔记四时钟树Clock tree
GD32_时钟配置解析
【GD32】系统时钟解析
史上最详细的gd32时钟频率设置