函数封装和时钟树

#include"systemtick.h"
#include"gd32f30x.h"
#define systiclk_real  ((~systick->val)&0xFFFFFF|(gsystick0vfcnt<<24))

static volatile  system_tick_type  gsystick0vfcnt=0;
static int gsystickperus;
void systick_handler(){++gsystick0vfcnt;}
  system_tick_type getsystemrealtick(){
	 return systiclk_real;
 }
void delay_us(unsigned int us){
	unsigned long long dest =systiclk_real+us*15;
	while(systiclk_real<dest);
}
void systemtickinit(){
	SysTick_Config(0x1000000);
	systick_clksource_set(SYSTICK_CLKSOURCE_HCLK_DIV8);
	gsystickperus=rcu_clock_freq_get(CK_AHB);

}
#ifndef system_tick_h
#define system_tick_h
typedef unsigned long long system_tick_type;
extern  void delay_us(unsigned int us);
extern void systemtickinit();


extern  system_tick_type getsystemrealtick();
#endif

时钟树

预分频器可以配置 AHB APB2 APB1 域的时钟频率。 AHB APB2 APB1 域的最高时钟频率
分别为 120MHz 120MHz 60MHz RCU 通过 AHB 时钟 (HCLK)8 分频后作为 Cortex 系统定时
(SysTick) 的外部时钟。通过对 SysTick 控制和状态寄存器的设置,可选择上述时钟或
AHB(HCLK) 时钟作为 SysTick 时钟
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值