📄 led0.c
字号:
#include "c6x.h"
//#define PROGXOR 1
#define LEDCTLR (*((unsigned char*)(0x90080017)))
void InitEMIF(); // 初始化EMIF接口
void Delay(unsigned int nDelay); // 软件延时子程序
main()
{
int i,j;
unsigned int uWork;
while ( 1 )
{
LEDCTLR=0; // 点亮所有8个指示灯
Delay(1024); // 等待片刻
LEDCTLR=0x0ff; // 关闭所有8个指示灯
Delay(1024);
#ifndef PROGXOR
uWork=1; // 以下逐个点亮指示灯
for ( i=0;i<8;i++ )
{
LEDCTLR&=((~uWork)&0x0ff);
uWork<<=1;
Delay(1024);
}
uWork=1; // 以下逐个关闭指示灯
for ( i=0;i<8;i++ )
{
LEDCTLR|=uWork;
uWork<<=1;
Delay(1024);
}
#else
for ( j=0;j<2;j++ )
{
uWork=1; // 以下逐个关闭或点亮指示灯
for ( i=0;i<8;i++ )
{
LEDCTLR^=uWork;
uWork<<=1;
Delay(1024);
}
}
#endif
}
}
// 软件延时子程序
void Delay(unsigned int nDelay)
{
unsigned int i,j,k;
for ( i=0;i<nDelay;i++ )
for ( j=0;j<6144;j++ )
k++;
}
// 初始化EMIF接口
void InitEMIF()
{
#define EMIFA_GCTL 0x01800000
#define EMIFA_CE1 0x01800004
#define EMIFA_CE0 0x01800008
#define EMIFA_CE2 0x01800010
#define EMIFA_CE3 0x01800014
#define EMIFA_SDRAMCTL 0x01800018
#define EMIFA_SDRAMTIM 0x0180001c
#define EMIFA_SDRAMEXT 0x01800020
#define EMIFA_CE1SECCTL 0x01800044
#define EMIFA_CE0SECCTL 0x01800048
#define EMIFA_CE2SECCTL 0x01800050
#define EMIFA_CE3SECCTL 0x01800054
/* EMIFA */
*(int *)EMIFA_GCTL = 0x00052078;
*(int *)EMIFA_CE0 = 0xffffffd3; /* CE0 SDRAM */
*(int *)EMIFA_CE1 = 0x73a28e01; /* CE1 Flash + CPLD */
*(int *)EMIFA_CE2 = 0x22a28a22; /* CE2 子卡 32-bit 异步接口 */
*(int *)EMIFA_CE3 = 0x22a28a42; /* CE3 子卡 32-bit 同步接口 */
*(int *)EMIFA_SDRAMCTL = 0x57115000; /* SDRAM 控制 */
*(int *)EMIFA_SDRAMTIM = 0x0000081b; /* SDRAM 刷新时序 */
*(int *)EMIFA_SDRAMEXT = 0x001faf4d; /* SDRAM 扩展控制 */
*(int *)EMIFA_CE0SECCTL= 0x00000002; /* CE0 第二控制寄存器 */
*(int *)EMIFA_CE1SECCTL= 0x00000002; /* CE1 第二控制寄存器 */
*(int *)EMIFA_CE2SECCTL= 0x00000002; /* CE2 第二控制寄存器 */
*(int *)EMIFA_CE3SECCTL= 0x00000073; /* CE3 第二控制寄存器 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -