×
单片机 > 单片机程序设计 > 详情

arm7 力天电子lpc2148 PLL实验(二)之 PLL重新设定实验参考程序

发布时间:2020-06-18 发布时间:
|

此程序是我根据周立功课本里面的程序修改的,


程序设定KEY1连接外部中断0,设置外部中断唤醒掉电CPU. 在掉电前,LED1闪烁10次(注意闪烁频率),然后进入掉电模式。一旦被外部中断唤醒,第一次实验不进行PLL重设定,再次让LED1闪烁10次,观察LED1闪烁频率。第二次实验进行PLL重设定,恢复掉电前的PLL设定,再次观察LED1闪烁的频率。


从实验结果可以看出,如果不进行PLL重设定,唤醒后LED1闪烁频率会比掉电前慢许多;进行PLL重新设定后,唤醒后LED1闪烁频率和掉电前一样。


实验程序如下所示:


#include


typedef unsigned char uint32;


void Delayn(unsigned long n);

void HC595_Init(void);

void WriteByte(unsigned char data);

void Write595(void);


unsigned int HC595_DATA = 0;

#define         SCLK  0x01<<24

#define         MISO  0x01<<5

#define         MOSI  0x01<<6

#define         RCK   0x01<<7


//初始化595接口

void HC595_Init(void)

{

  IO0DIR |= MOSI|RCK; 

  IO1DIR |= SCLK;

  IO1CLR |= SCLK;

  IO0DIR |= RCK;

  

  HC595_DATA = 0xFFFFFFFF;  

  Write595();

}

//写字节

void WriteByte(unsigned char data)

{

  unsigned char i;

  //IO0CLR = RCK;

  for(i=0;i<8;i++)

  {

    if(data&0x01)      IO0SET=MOSI;

    else      IO0CLR=MOSI;

    IO1SET=SCLK;

    data>>=1;

    IO1CLR=SCLK;

  }

  //IO0SET = RCK;

}

//刷新595的数据

void Write595(void)

{

  IO0CLR = RCK;

  WriteByte(HC595_DATA&0xff);

  WriteByte((HC595_DATA&0xff00)>>8);

  WriteByte((HC595_DATA&0xff0000)>>16);

  WriteByte((HC595_DATA&0xff000000)>>24);

  IO0SET = RCK;

}

main()

{

  //初始化74HC595

  HC595_Init();

  

  uint32 i;

  PINSEL1=0x00000001;  //P0.16连接EINT0

  PINSEL2=PINSEL2&(~0x08);//P1[25:16]连接GPIO

  IO1DIR |= SCLK;     //P.18控制LED1,低电平点亮(设置LED1控制口为输出,其余I/O为输入)

  EXTWAKE=0x01;    //外部中断0唤醒芯片

  EXTINT=0x01;     //清除EINT0中断标志

//掉电前闪烁10次,注意闪烁频率

 for(i=0;i<10;i++)

 {

   //IO1SET=1<<18;   //LED1亮

   HC595_DATA &=~(1<<18);

   Write595(); 

   Delayn(2500000);

   //IO1CLR=1<<18;   //LED1灭

   HC595_DATA |=(1<<18);

   Write595();

   Delayn(2500000);

 }

  PCONP=0x00;    //关闭定时器,RTC和UART等功能部件

  PCON=0x03;     //系统进入掉电模式

  

  //摁KEY1键唤醒CPU

  //实验分两次进行,第一次不进行PLL重新设定,观察掉电前和唤醒后LED1的闪烁频率;

  //第二次加上PLL重设定,再次观察掉电前和唤醒后LED1闪烁频率

  

  /*重新设定PLL——开始*/

 /* PLLCON=1;  //使能PLL

  PLLCFG=0x23; //设置M为4,P为2,和掉电前一样

  PLLFEED=0xaa;  //发送PLL馈送序列

  PLLFEED=0x55;

  while((PLLSTAT&(1<<10))==0); //等待PLL锁定

  PLLCON=3;      //PLL使能和连接

  PLLFEED=0xaa;

  PLLFEED=0x55;

 */

  /*重新设定PLL--结束*/

  //唤醒后闪烁10次,注意闪烁频率

  for(i=0;i<10;i++)

  {

    //IO1SET=1<<18;

    HC595_DATA &=~(1<<18);

    Write595(); 

    Delayn(250000);

    //IO1CLR=1<<18;

    HC595_DATA |=(1<<18);

    Write595();

    Delayn(250000); 

  }

  while(1);

}

//延时周期数

void Delayn(unsigned long n)

{

  while(n--);

}


关键字:arm7  lpc2148  PLL  重新设定 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义