1,打开GD32F4的用户手册,该芯片是基于cortex M4的。
2,GD32F4芯片的时钟树,可以找到Systick的时钟源。
3,系统时钟配置:
在System_gd32f4xx.c文件中根据当前的硬件选择对应的时钟
创建一个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函数中调用时钟配置。
4,调试程序,观察g_systick实时变化,
void SysTick_Handler(void)中断函数每进来一次,g_systick增加1.
说明系统滴答时钟配置正常可用