GD32F4xx系统时钟滴答定时器

1,打开GD32F4的用户手册,该芯片是基于cortex M4的。
GD32F4xx系统时钟滴答定时器_第1张图片
2,GD32F4芯片的时钟树,可以找到Systick的时钟源。
GD32F4xx系统时钟滴答定时器_第2张图片
3,系统时钟配置:
在System_gd32f4xx.c文件中根据当前的硬件选择对应的时钟
GD32F4xx系统时钟滴答定时器_第3张图片
创建一个systick.c文件,配置系统时钟

volatile static uint32_t g_delay_time; //用于做延时函数调用
uint32_t g_systick=0;	//用于记录当前系统运行时间

/*注SysTick_Config 和 NVIC_SetPriority 函数在m4 的内核头文件中有详细实现,大家可以参考下*/
void systick_config(void)
{
    /* setup systick timer for 1000Hz interrupts *//*这里相当于配置的是1ms中断一次*/
    if (SysTick_Config(SystemCoreClock / 1000U)){
        /* capture error */
        while (1){
        }
    }
    /* configure the systick handler priority *//*设置中断优先级*/
    NVIC_SetPriority(SysTick_IRQn, 0x00U);
}

void SysTick_Handler(void)	//中断函数
{
    delay_decrement();
}

void delay_1ms(uint32_t count)
{
    g_delay_time = count;
    while(0U != g_delay_time){
    }
}

void delay_decrement(void)
{
	if (0U != g_delay_time){
    	g_delay_time--;
	}
	g_systick++;
}

uint32_t timer_get_system_ms(void)
{
	return g_systick;
}

3,在main函数中调用时钟配置。
GD32F4xx系统时钟滴答定时器_第4张图片
4,调试程序,观察g_systick实时变化,
void SysTick_Handler(void)中断函数每进来一次,g_systick增加1.
GD32F4xx系统时钟滴答定时器_第5张图片
说明系统滴答时钟配置正常可用

你可能感兴趣的:(GD32开发,单片机,stm32,c语言)