#include "sysctrl.h" #include "flash.h" static volatile uint32_t sys_ticks = 0; //systick中断函数 void SysTick_IRQHandler(void) { // static boolean_t bFlag = TRUE; // // if(TRUE == bFlag) // { // bFlag = FALSE; // Gpio_WriteOutputIO(STK_Module_LED_PORT, STK_Module_LED_PIN, TRUE); //LED 引脚输出高电平 // } // else // { // bFlag = TRUE; // Gpio_WriteOutputIO(STK_Module_LED_PORT, STK_Module_LED_PIN, FALSE); //LED引脚输出低电平 // } sys_ticks++; } uint32_t sys_tick_get(void) { return sys_ticks; } //时钟初始化配置 void board_sysclkInit(void) { stc_sysctrl_clk_cfg_t stcCfg; ///< 开启FLASH外设时钟 Sysctrl_SetPeripheralGate(SysctrlPeripheralFlash, TRUE); ///<========================== 时钟初始化配置 =================================== ///< 因要使用的时钟源HCLK小于24M:此处设置FLASH 读等待周期为0 cycle(默认值也为0 cycle) Flash_WaitCycle(FlashWaitCycle0); ///< 时钟初始化前,优先设置要使用的时钟源:此处设置RCH为4MHz Sysctrl_SetRCHTrim(SysctrlRchFreq4MHz); ///< 选择内部RCH作为HCLK时钟源; stcCfg.enClkSrc = SysctrlClkRCH; ///< HCLK SYSCLK/1 stcCfg.enHClkDiv = SysctrlHclkDiv1; ///< PCLK 为HCLK/1 stcCfg.enPClkDiv = SysctrlPclkDiv1; ///< 系统时钟初始化 Sysctrl_ClkInit(&stcCfg); } //将时钟从RCH4MHz切换至RCH24MHz, void board_Rch4MHzTo24MHz(void) { ///<============== 将时钟从RCH4MHz切换至RCH24MHz ============================== ///< RCH时钟不同频率的切换,需要先将时钟切换到RCL,设置好频率后再切回RCH Sysctrl_SetRCLTrim(SysctrlRclFreq32768); Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); Sysctrl_SysClkSwitch(SysctrlClkRCL); ///< 加载目标频率的RCH的TRIM值 Sysctrl_SetRCHTrim(SysctrlRchFreq24MHz); ///< 使能RCH(默认打开,此处可不需要再次打开) //Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE); ///< 时钟切换到RCH Sysctrl_SysClkSwitch(SysctrlClkRCH); ///< 关闭RCL时钟 Sysctrl_ClkSourceEnable(SysctrlClkRCL, FALSE); }