#include "clock.h" #include "gd32f3x0.h" extern uint32_t SystemCoreClock; void delay_us(uint32_t us){ uint32_t insr_num = (SystemCoreClock /40000000 + 1) * us;// 1000000; while(insr_num-->0); } uint32_t get_sys_clock(void){ return SystemCoreClock; } uint32_t get_ahb_clock(void){ return rcu_clock_freq_get(CK_AHB); } uint32_t get_apb1_clock(void){ return rcu_clock_freq_get(CK_APB1); } uint32_t get_apb2_clock(void){ return rcu_clock_freq_get(CK_APB2); } uint32_t get_adc_clock(void){ return rcu_clock_freq_get(CK_ADC); } uint32_t get_apb1_timer_clock(void){ uint32_t apb1psc = 0U; apb1psc = RCU_CFG0; uint32_t div = GET_BITS(apb1psc, 8, 10); if (div == 0){ //DIV1 return get_apb1_clock(); } return get_apb1_clock() * 2; } uint32_t get_apb2_timer_clock(void){ uint32_t apb2psc = 0U; apb2psc = RCU_CFG0; uint32_t div = GET_BITS(apb2psc, 11, 13); if (div == 0){ //DIV1 return get_apb2_clock(); } return get_apb2_clock() * 2; }