TM4的系统时钟频率
首先上一张时钟树的图:
虽然时钟树乍看上去很复杂,不过慢慢学,明白了就会发现它其实很简单,都是顺着脉络走。
先来看操作函数:void SysCtlClockSet(uint32_t ui32Config);
该函数即是设置整个单片机的工作频率。
关于该函数的参数详细说明
1、所有参数见sysctl.h该文件
该处拿出部分参数:
//*****************************************************************************
//
// The following are values that can be passed to the SysCtlClockSet() API as
// the ui32Config parameter.
//
//*****************************************************************************
#define SYSCTL_SYSDIV_1 0x07800000 // Processor clock is osc/pll /1
#define SYSCTL_SYSDIV_2 0x00C00000 // Processor clock is osc/pll /2k is pll / 2.5z
#define SYSCTL_CFG_VCO_320 0xF0000000 // VCO is 320 MHz
#define SYSCTL_USE_PLL 0x00000000 // System clock is the PLL clock
#define SYSCTL_USE_OSC 0x00003800 // System clock is the osc clock
#define SYSCTL_XTAL_1MHZ 0x00000000 // External crystal is 1MHz
#define SYSCTL_XTAL_16MHZ 0x00000540 // External crystal is 16 MHz
#define SYSCTL_OSC_MAIN 0x00000000 // Osc source is main osc
#define SYSCTL_OSC_INT 0x00000010 // Osc source is int. osc
#define SYSCTL_OSC_INT4 0x00000020 // Osc source is int. osc /4
#define SYSCTL_OSC_INT30 0x00000030 // Osc source is int. 30 KHz
#define SYSCTL_OSC_EXT32 0x80000038 // Osc source is ext. 32 KHz
#define SYSCTL_INT_OSC_DIS 0x00000002 // Disable internal oscillator
#define SYSCTL_MAIN_OSC_DIS 0x00000001 // Disable main oscillator
2、配置实例
SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
SYSCTL_SYSDIV_5
表示分频值,为5分频。SYSCTL_USE_PLL
表示系统时钟使用锁相环达到400Mhz(PLL介绍)。SYSCTL_XTAL_16MHZ
表示外部晶振是16MHz。SYSCTL_OSC_MAIN
表示时钟使用主振荡器。
综合起来:时钟频率等于400/2/5 = 40MHz
在时钟树上即:
是不是很清晰易懂?
3、注意事项:
我们在使用TM4这款单片机的时候需要注意如果用了锁相环,则分频系数至少为2.5,因为400/2/2.5=80,TM4最高时钟频率是80MHz。