一、时钟树
二、操作函数: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 // 时钟分频值是振荡器或锁相环 /1
#define SYSCTL_SYSDIV_2 0x00C00000 // 处理器时钟是振荡器或锁相环 /2
#define SYSCTL_CFG_VCO_320 0xF0000000 // 压控振荡器频率是320 MHz
#define SYSCTL_USE_PLL 0x00000000 // 系统时钟是锁相环(PLL)时钟
#define SYSCTL_USE_OSC 0x00003800 // 系统时钟是内部低频振荡器(OSC)时钟
#define SYSCTL_XTAL_1MHZ 0x00000000 // 外部晶振是1MHz
#define SYSCTL_XTAL_16MHZ 0x00000540 // 外部晶振是16MHz
#define SYSCTL_OSC_MAIN 0x00000000 // 时钟源是主振荡器
#define SYSCTL_OSC_INT 0x00000010 // 时钟源是内部振荡器
#define SYSCTL_OSC_INT4 0x00000020 // 时钟源是内部振荡器/4
#define SYSCTL_OSC_INT30 0x00000030 // 时钟源是内部30KHz时钟
#define SYSCTL_OSC_EXT32 0x80000038 // 时钟源是外部32KHz时钟
#define SYSCTL_INT_OSC_DIS 0x00000002 // 禁能内部振荡器
#define SYSCTL_MAIN_OSC_DIS 0x00000001 // 禁能主振荡器
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
在时钟树的表示即:
三、注意事项
我们在使用TM4这款单片机的时候需要注意如果用了锁相环,则分频系数至少为2.5,因为400/2/2.5=80,而TM4的最高时钟频率是80MHz,超频运行容易导致系统不稳定。