掉电唤醒后重设pll实验.c

来自「针对PP2132V1开发的详细的实验教程」· C语言 代码 · 共 83 行

C
83
字号
/**************************************************************
实验名称:掉电唤醒后重设PLL实验
实验目的:熟悉PLL的使用
实验准备:带中断的程序应该运行在FLASH模式下
实验日期:2008,3,30
作者:    刘启明
***************************************************************/
#include "iolpc2132.h"
#include "inarm.h"
#define  LED1 1 << 18;		/* P1.18控制LED1,低电平点亮 */

/***************************************************************
** 函数名称 :DelayNS()
** 函数功能 :长软件延时
** 入口参数 :dly 	延时参数,值越大,延时越久
** 出口参数 :无
***************************************************************/
void DelayNS (unsigned int dly)
{
	unsigned int i;
	
	for ( ; dly>0; dly--)
	     for (i=0; i<50000; i++);
}

/***************************************************************
** 函数名称 :main()
** 函数功能 :掉电唤醒后重新连接PLL
** 入口参数 :无。
** 出口参数 :无。
***************************************************************/
void main (void)
{
	unsigned int i;
	
	PINSEL1 = 0x00000001;				// P0.16连接EINT0
	IO1DIR  = LED1;					// 设置LED1控制口为输出,其余输入
	
	EXTWAKE        = 0x01;				// 外部中断0唤醒芯片
	EXTINT         = 0x01;				// 清除EINT0中断标志
	
	/* 掉电前闪烁10次,注意闪烁频率 */
	for (i=0; i<10; i++)
	{
		IO1SET = LED1;
		DelayNS(20);
		IO1CLR = LED1;
		DelayNS(20);
	}
	PCONP = 0x00;						// 关闭定时器、RTC、UART等功能部件
	PCON  = 0x02;						// 系统进入掉电模式
	
	/* 按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;						// 发送PLL馈送序列
        PLLFEED = 0x55;
*/
	/* 重设定PLL-- 结束 */

	/* 唤醒后前闪烁10次,注意闪烁频率 */
	for (i=0; i<10; i++)
	{
		IO1SET = LED1;
		DelayNS(20);
		IO1CLR = LED1;
		DelayNS(20);
	}

	while (1);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?