天嵌 ARM开发社区

 找回密码
 注册
查看: 1682|回复: 1

TQ2440-进入空闲模式试验

[复制链接]
qiang1092 发表于 2009-8-12 17:10:57 | 显示全部楼层 |阅读模式
您可以来我的blog:http://chenjunqiang08.blog.163.com/

试验目的:明白空闲模式怎么进入,知道过程。

试验环境:tq2440开发板+J-link+ADS

试验过程:

1.连上j-link,开发板上电。

2.c语言编写试验代码,并包含所需要的启动代码等文件。

3.设置ADS的RO Base为0x00000000。注意:本试验不能仿真,进入空闲会使j-link无法仿真。

4.下载到板子的0地址,观察现象。

5.试验参考代码:

#include "2440addr.h"
#define EnterPWDN(clkcon) ((void (*)(int))0x00000020)(clkcon)

void Delay(int a)//延时函数
{
int i=a;
while(i--);
}
void __irq Int1()//唤醒,使led闪烁
{
Delay(300000);//防抖,还是不行有时灯也使乱闪,那位指点一下。
ClearPending(BIT_EINT1);//清除中断标志SRCPND
//third led is turned over
rGPBDAT =(rGPBDAT|(1<<7))&(~(rGPBDAT&(1<<7)));
}
void __irq Int2()//进入空闲
{
Delay(300000);//防抖
ClearPending(BIT_EINT2);//清除中断标志SRCPND
//灯闪,提示要进入
rGPBDAT =(rGPBDAT|(1<<6))&(~(rGPBDAT&(1<<6)));
Delay(90000);
rGPBDAT =(rGPBDAT|(1<<6))&(~(rGPBDAT&(1<<6)));
//进入 sleep mode
EnterPWDN(0x7fff4);
//灯闪,提示要推出。
rGPBDAT =(rGPBDAT|(1<<6))&(~(rGPBDAT&(1<<6)));
Delay(90000);
rGPBDAT =(rGPBDAT|(1<<6))&(~(rGPBDAT&(1<<6)));
}

void EINT_Init()
{
rGPFCON=0x2aa;//设置按键为EINT中断

rEXTINT0=0x2;//设置为下降沿触发
pISR_EINT1=(unsigned int)Int1;//中断处理函数
pISR_EINT2=(unsigned)Int2;//中断处理函数

rINTMOD=0;//所用中断都是IRQ
rINTMSK=0xffffffe0;//开中断
}

void Main(void)
{
// 将LED1-4对应的GPB5/6/7/8四个引脚设为输出
rGPBCON =0x55555554;
rGPBDAT=~0;//关闭led
  
EINT_Init();
rGPBDAT =(rGPBDAT|(1<<6))&(~(rGPBDAT&(1<<6)));
while(1)
{
  Delay(900000);
  rGPBDAT =(rGPBDAT|(1<<8))&(~(rGPBDAT&(1<<8)));
}
}
亚瑟王 发表于 2009-8-13 11:23:26 | 显示全部楼层
好东东,赞一个。:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-13 19:49 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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