ARM学习《三》PLL时钟配置——让心脏跳起来!
在默认状态下(就是不做任何设置),每种外设的时钟都是关闭的。所以在系统初始化的时候我们要进行时钟设置,外设(如定时器)才能正常的工作。在这里我拿LM3S8962开发板为例进行时钟配置,其实时钟配置说白了就是对系统控制的某些寄存器进行设置。在LM3S系列的MCU中关键是对RCC运行模式时钟配置寄存器进行配置,先来看一下头文件对RCC的定义:
#define
注意SYSCTL_RCC还不算是地址,要将SYSCTL_RCC转化成可任意操作的寄存器,在上篇文章中我说了,是这样来转换的:
#define
为什么是这样,上篇文章就已经解释过了,不多说。
下面的一些预定义是RCC寄存器中每个位的值和名称,这些不是地址,只是一些数值,每一位或者每几位的数值。
#define SYSCTL_RCC_ACG
#define SYSCTL_RCC_SYSdiv_M
#define SYSCTL_RCC_USESYSdiv
#define SYSCTL_RCC_PWRDN
#define SYSCTL_RCC_BYPASS
#define SYSCTL_RCC_XTAL_M
#define SYSCTL_RCC_OSCSRC_M
#define SYSCTL_RCC_OSCSRC_MAIN
#define SYSCTL_RCC_IOSCDIS
#define SYSCTL_RCC_MOSCDIS
如:#define SYSCTL_RCC_ACG
下面写设置时钟函数:
void SysCtlClockSet( ) //设置系统时钟
{
unsigned long
ulRCC |= SYSCTL_RCC_BYPASS;
ulRCC |= SYSCTL_RCC_USESYSdiv; //使能系统分频器
ulRCC|=SYSCTL_RCC_IOSCDIS; //内部时钟禁能
ulRCC&=~(SYSCTL_RCC_OSCSRC_M);
ulRCC|=SYSCTL_RCC_PWRDN;//PLL掉电
ulRCC|=SYSCTL_SYSdiv_4;//选择4分频
ulRCC|=SYSCTL_USE_PLL;//用PLL
ulRCC|=SYSCTL_OSC_MAIN;//主振荡器
ulRCC|=SYSCTL_XTAL_8MHZ ; //晶振设置8M
HWREG(SYSCTL_MISC) = SYSCTL_INT_PLL_LOCK; //屏蔽PLL中断
while((HWREG(SYSCTL_RIS) & SYSCTL_INT_PLL_LOCK)) //等待PLL有效
ulRCC &= ~(SYSCTL_RCC_BYPASS); //使能PLL
HWREG(SYSCTL_RCC) = ulRCC; //设置成功
}
上面的函数就是对RCC寄存器的每一项进行设置,在51中一个赋值语句完事,在这里要这么复杂,因为ARM的寄存器以及内容实在是太多了。ARM的心脏跳动起来了,就可以做其他活了,下次我要操作IO口了。
ARM学习PLL时钟配 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)