历史上的今天
今天是:2025年05月14日(星期三)
2019年05月14日 | arm7 力天电子lpc2148 PLL实验(二)之 PLL重新设定实验参考程序
2019-05-14 来源:eefocus
此程序是我根据周立功课本里面的程序修改的,
程序设定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--); }
史海拾趣
|
一般酒店预订流程: 第一步:客户在酒店网站注册会员并提交预订信息,网站管理人员在后台手动提取信息; 第二步:网站管理人员将提取后的信息提供给客服人员; 第三部:客服通过电话与客户进行订房信息的确认、行程安排确认 第四步:客服人员 ...… 查看全部问答> |
|
随着2010年上海世博会、广州亚运会两大盛会的相继召开,我国安防市场整体需求呈现出快速增长的势头,这种快速的增长不仅体现在金融、公安等传统的安防领域,在智能建筑、新型社区等新领域对于监控的需求也在急剧增加,我国安防市场呈现出多样化的发 ...… 查看全部问答> |
|
#include unsigned char flag,rcvdat,retval,sumchkm,xorchkm; unsigned char state_machine[11]; void main() { TMOD=0x20;//设置定时器1为工作方式2 TH1=0xfd; &n ...… 查看全部问答> |
|
我在网上下载了一个源代码是基于CC2430的zigbee 点对点的实例通信代码,但是看不懂, 能不能帮我解释一下程序的大致框架和实现原理,诸如 hal层 cul层 是实现什么的,程序如何工作的?十分感谢了 TI(德州仪器公司)的CC2430芯片的库函数以及一些 ...… 查看全部问答> |
|
作了一些修改后,把u-boot移植到xsbase270板子上,主要是参考网上Aaron Wong的资料的 http://www.cublog.cn/u/26710/article_68652.html 编译生成了u-boot.bin文件,烧写后启动不了,用minicom无法进入菜单,请问这是什么原因呢?… 查看全部问答> |
|
wince下有没有USB的API函数? 如果有,能否把这方面的文档发送到我的邮箱: lh806732@163.com 如果没有难道也是用READ,WRITE那些函数吗? 有这方面的例子就更好了,我将再开一帖给分。我一次最多只能给100分。… 查看全部问答> |
|
老大们帮忙看个问题:U盘过滤驱动的安装(都两天了,快把俺给急疯了) 这两天写了一个U盘的过滤驱动(更准确的说应该是改了一个), 但是我在注册表中添加了相应的项之后,在驱动的列表中发现了它, 但是他的状态是停止的. 但是我不知道怎么来启动他,所说特此来请教各位. 我的注册表的操作是这样的,不知道对不 ...… 查看全部问答> |




