智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1447|回复: 0
打印 上一主题 下一主题

S12Xdp512 PLL的应用

[复制链接]

1

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
237
威望
197
贡献
40
兑换币
0
注册时间
2011-4-16
在线时间
0 小时
跳转到指定楼层
1#
发表于 2011-4-16 10:34:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /*---------------------------------------------------------*/
  2. /************************************************************
  3. 飞翔科技MC9S12XDP512汽车电子综合开发平台
  4. E-mail:bhfengchong@gmail.com
  5.        2008f.d@163.com
  6. 淘宝店:http://fxfreefly.taobao.com
  7.         http://fxfreefly2.taobao.com
  8. ************************************************************/
  9. /*---------------------------------------------------------*/
  10. #include <hidef.h>      /* common defines and macros */
  11. #include "derivative.h"      /* derivative-specific definitions */

  12. #define LEDCPU PORTK_PK4
  13. #define LEDCPU_dir DDRK_DDRK4

  14. #define  BUS_CLOCK                   80000000           //总线频率
  15. #define  OSC_CLOCK                   16000000           //晶振频率

  16. /*************************************************************/
  17. /*                      初始化锁相环                         */
  18. /*************************************************************/
  19. void INIT_PLL(void)
  20. {
  21.     CLKSEL &= 0x7f;       //设置OSCCLK作为系统时钟
  22.     PLLCTL &= 0x8F;       //禁止锁相环

  23.     //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1), fbus=PLLCLK/2
  24.     #if(BUS_CLOCK == 120000000)
  25.         SYNR = 0xcd;
  26.     #elif(BUS_CLOCK == 104000000)
  27.       SYNR = 0xcc;
  28.     #elif(BUS_CLOCK == 96000000)
  29.       SYNR = 0xcb;
  30.     #elif(BUS_CLOCK == 88000000)
  31.       SYNR = 0xca;
  32.     #elif(BUS_CLOCK == 80000000)
  33.       SYNR = 0xc9;
  34.     #elif(BUS_CLOCK == 72000000)
  35.       SYNR = 0xc8;
  36.     #elif(BUS_CLOCK == 64000000)
  37.       SYNR = 0xc7;
  38.     #elif(BUS_CLOCK == 56000000)
  39.       SYNR = 0xc6;
  40.     #elif(BUS_CLOCK == 48000000)
  41.       SYNR = 0xc5;
  42.     #elif(BUS_CLOCK == 40000000)
  43.       SYNR = 0x44;
  44.     #elif(BUS_CLOCK == 32000000)
  45.       SYNR = 0x43;     
  46.     #elif(BUS_CLOCK == 24000000)
  47.       SYNR = 0x42;
  48.     #elif(BUS_CLOCK == 16000000)
  49.       SYNR = 0x01;
  50.    #endif

  51.     REFDV = 0x81;
  52.     PLLCTL |=0x70;  //使能锁相环
  53.     asm NOP;
  54.     asm NOP;
  55.     while(!(CRGFLG&0x08)); //PLLCLK锁定
  56.     CLKSEL |= 0x80;        //设置PLLCLK为系统时钟
  57. }

  58. /*************************************************************/
  59. /*                         延时函数                          */
  60. /*************************************************************/
  61. void delay(void)
  62. {
  63.     unsigned int i,j;
  64.     for(i=0;i<10;i++)
  65.       for(j=0;j<50000;j++);
  66. }

  67. /*************************************************************/
  68. /*                         主函数                            */
  69. /*************************************************************/
  70. void main(void) {
  71.   DisableInterrupts;
  72.   INIT_PLL();
  73.   LEDCPU_dir = 1;
  74.   LEDCPU = 0;
  75.   EnableInterrupts;
  76.   
  77.   for(;;)
  78.   {
  79.     delay();
  80.     LEDCPU = ~LEDCPU;           //反转灯的状态
  81.   }
  82. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-6 21:26 , Processed in 0.292547 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表