(prescaler+1)*(period+1)*2/CK_TIMER,其中CK_TIMER根据APB1和APB2的分频系数决定 二、GD32F4xx系列 实际上GD32F4xx系列的周期时间计算公式和GD32F30x的相同,不同的点在于CK_TIMER的计算公式,照例看下GD32F4xx的时钟树:可以看到CK_TIMER可以是APB时钟乘以1、乘以2或乘以4,那具体是乘以几呢?这个...
(prescaler+1)*(period+1)*2/CK_TIMER,其中CK_TIMER根据APB1和APB2的分频系数决定 二、GD32F4xx系列 实际上GD32F4xx系列的周期时间计算公式和GD32F30x的相同,不同的点在于CK_TIMER的计算公式,照例看下GD32F4xx的时钟树: 可以看到CK_TIMER可以是APB时钟乘以1、乘以2或乘以4,那具体是乘以几呢?这个是根据...
(prescaler+1)*(period+1)*2/CK_TIMER,其中CK_TIMER根据APB1和APB2的分频系数决定 二、GD32F4xx系列 实际上GD32F4xx系列的周期时间计算公式和GD32F30x的相同,不同的点在于CK_TIMER的计算公式,照例看下GD32F4xx的时钟树: 可以看到CK_TIMER可以是APB时钟乘以1、乘以2或乘以4,那具体是乘以几呢?这个是根据...
GD32系列MCU在启动后首先会执行Reset Handler,紧接着就会执行SystemInit()函数,而时钟的初始化,就是在这个函数中进行,其主要的功能是配置系统时钟CK_SYS(即主频),AHB、APB1以及APB2时钟。SystemInit()函数由GD32官方库提供,不同系列的MCU有一些差别,但实现方式基本相同:首先将RCU关于CK_SYS,AHB、APB1以及...
4xx系列RTC工作在备份域,可在低功耗模式下保持工作,通过APB总线可对RTC寄存器进行读取和配置。如下图4xx系列RTC结构框图所示,RTC时钟源可配置通过数字平滑校准或直接输入到7位异步预分频器输出ck_apre时钟用于RTC_SS亚秒寄存器自减计数,ck_apre时钟又可通过数字粗平滑校准或直接输入15位同步预分频器后输出1HZ的ck...
x0系列RTC工作在备份域,可在低功耗模式下保持工作,通过APB总线可对RTC寄存器进行读取和配置。如下图x0系列RTC结构框图所示,RTC时钟源可配置通过数字平滑校准或直接输入到7位异步预分频器输出ck_apre时钟用于RTC_SS亚秒寄存器自减计数,ck_apre时钟又经过15位同步预分频器后输出1HZ的ck_spre时钟提供日历寄存器使用;...
GD32系列MCU在启动后首先会执行Reset Handler,紧接着就会执行SystemInit()函数,而时钟的初始化,就是在这个函数中进行,其主要的功能是配置系统时钟CK_SYS(即主频),AHB、APB1以及APB2时钟。SystemInit()函数由GD32官方库提供,不同系列的MCU有一些差别,但实现方式基本相同:首先将RCU关于CK_SYS,AHB、APB1以及APB2时...
ADC时钟由APB2时钟经2、4、6、8、12、16分频或由AHB时钟经5、6、10、20分频获得,它们是通过设置RCU_CFG0和RCU_CFG1寄存器的ADCPSC位来选择。 SDIO, EXMC的时钟由CK_AHB提供。 TIMER时钟由CK_APB1和CK_APB2时钟分频获得,如果APBx(x=0,1)的分频系数不为1,则TIMER时钟为CK_APBx(x=0,1)的两倍。
1. 开启高速时钟源 RCU_CTL |= RCU_CTL_HXTALEN; 2.配置 APB1 = AHB/4 RCU_CFG0 |=RCU_APB1_CKAHB_DIV4; 3.配置PLL为系统时钟源 这样系统时钟就是200M的时钟了 那么APB1是多少呢? 根据RCU_CFG1的寄存器说明: AHB = SYSCLK; APB1 = AHB/4= 200M/4 = 50MHz; ...
#include "gd32xxxx.h" // 包含GD32的头文件,具体文件名可能因型号而异 int main(void) { uint32_t sys_clk_freq, ahb_clk_freq, apb1_clk_freq, apb2_clk_freq; // 获取系统时钟频率 sys_clk_freq = rcu_clock_freq_get(CK_SYS); // 获取AHB时钟频率 ahb_clk_freq = rcu_clock_freq_get(...