4778|3

1万

帖子

16

TA的资源

版主

楼主
 

LM3S811DDLLXXRR笔记之三:时钟及PLL [复制链接]

基础时钟源
器件有2个时钟源可供使用:
■ 内部振荡器(IOSC):内部振荡器是片内时钟源。 它不需要使用任何外部元件。 内部振荡器的
频率是12 MHz ± 30%。 不依赖精确时钟源的应用可以使用这个时钟源来降低系统成本。
■ 主振荡器:主振荡器用下面的其中一种方法来提供一个频率精确的时钟源:OSC0输入管脚连接
一个外部单端时钟源或在OSC0输入和OSC1输出管脚之间连接一个外部晶体。 允许的晶体值取决
于主振荡器是否用作PLL的时钟参考源。 如果主振荡器用作PLL的时钟参考源,那么支持的晶体
频率范围为3.579545 MHz~8.192 MHz (3.579545 MHz和8.192 MHz包含在内)。 如果没有使
用PLL,则支持的晶体频率在1 MHz和8.192 MHz之间。 单端时钟源的范围从DC到器件的指定速
率之间。
内部系统时钟(sysclk)来自 2个时钟源以及内部PLL输出和4分频的内部振荡器 (3 MHz ± 30%)。
PLL时钟基准的频率必须在3.579545 MHz 到 8.192 MHz 的范围之内(3.579545MHz、8.192MHz
和 16.384MHz 包括在内)。
几乎所有的时钟控制都是由运行模式时钟配置(RCC)寄存器提供的。
 外设模块由系统时钟信号驱动,可以被编程为使能/禁能。ADC时钟信号被自动向下分频为16.67 MHz ,

以满足ADC操作的要求。 PWM时钟信号是系统时钟的同步分频,从而提供带有更大范围的PWM电路。

 

在这里我想说的是为什么用PLL,我想说白了就是想提高运行速度,就是超频超到50MHZ,其实平时6MHZ

就够用

 

 

说PLL就不得不说PLL的分频值

 

 

系统时钟分频值
指定使用哪个分频值来从PLL输出产生系统时钟。
PLL VCO的频率是200 MHz。
值分频值(BYPASS=1) 频率(BYPASS=0)
0x0 保留保留
0x1 /2 保留
0x2 /3 保留
0x3 /4 50 MHz
0x4 /5 40 MHz
0x5 /6 33.33 MHz
0x6 /7 28.57 MHz
0x7 /8 25 MHz
0x8 /9 22.22 MHz
0x9 /10 20 MHz
0xA /11 18.18 MHz
0xB /12 16.67 MHz
0xC /13 15.38 MHz
0xD /14 14.29 MHz
0xE /15 13.33 MHz
0xF /16 12.5 MHz(默认)

 

下面的例子我选4分频就是50MHZ

 

顺便说下我这个实例,这个老好了,直接从LED灯看到各种主频的变化

 

我用的是LED5就是那个红灯,

 

刚开始是慢四,然后快六,然后特快

 

好像提前过年一样,呵呵

 

少费话,上程

 

#include <LM3Sxxx.H>
#define LED 0x01
unsigned char ddd ;   
void uit(void)
{
   SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_6MHZ);
     
   SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
   GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0 |GPIO_PIN_1 );
   GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,0x00);
}

 

void LED_Toggle(void)
{
 
  if(ddd == 0)
  {
  GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,LED);
  ddd = 0x01;
  }
  else
  {
     GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,0x00);
   ddd = 0x00;
  }
}   
 


 //  延时
void  Delay(unsigned long  ulVal)
{
    while ( --ulVal  !=  0 );
}


//  LED闪烁usTimes次
void  LED_Flash( unsigned short  usTimes)
{
    unsigned short  n  =  2 * usTimes;

    do
    {
        LED_Toggle();
        Delay(200000UL);
    } while ( --n  !=  0 );                   //循环
}
//  防止JTAG失效
void jtagWait(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);          //  使能KEY所在的GPIO端口
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4);     //  设置KEY所在管脚为输入
if (GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_4) == 0x00)  //  若复位时按下KEY,则进入
    {
       while(1);                             //  死循环,以等待JTAG连接
    }
  SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOC);   //  禁止KEY所在的GPIO端口
}


int  main(void)
{
    jtagWait();                                                //  防止JTAG失效,重要!

    uit();                                             //  LED初始化

    for (;;)
    {
        SysCtlClockSet(SYSCTL_USE_OSC |                         //  系统时钟设置,采用振荡器
                       SYSCTL_OSC_MAIN |                        //  主振荡器
                       SYSCTL_XTAL_6MHZ |                       //  外接6MHz晶体
                       SYSCTL_SYSDIV_3);                        //  3分频

        LED_Flash(4);

        SysCtlClockSet(SYSCTL_USE_OSC |                         //  系统时钟设置,采用振荡器
                       SYSCTL_OSC_INT |                         //  内部振荡器(12MHz±30%)
                       SYSCTL_SYSDIV_2);                        //  2分频

        LED_Flash(6);

  SysCtlLDOSet(SYSCTL_LDO_2_75V);    //配置PLL前需将LDO电压设置为2.75V                   
        SysCtlClockSet(SYSCTL_USE_PLL |    // 系统时钟设置,采用PLL                         
        SYSCTL_OSC_MAIN |                  // 主振荡器         
  SYSCTL_XTAL_6MHZ |                 // 外接6MHz晶振        
  SYSCTL_SYSDIV_4);        // 分频结果为50MHz

     
     LED_Flash(6);   
     }
}

 

这个把相应库文件包含到LIB就行,图如下,没有什么要修。S文件地非常方便运行

 

 

myPLL.zip (1.09 KB, 下载次数: 55)

 

最新回复

不错顶顶楼主  详情 回复 发表于 2011-6-7 01:34
 
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复
举报

4138

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
不错顶顶楼主
 
 

回复

102

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
这都是例程上的吧!防止JTAG失效的程序一般情况下写不写都可以
 
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

4
 
不错顶顶楼主
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表