新手,最近在看瑞泰创新的DSP箱子,有一个LED试验程序,代码如下:// 定义指示灯寄存器地址和寄存器类型
#define LBDS (*((unsigned int *)0xc0000))
unsigned int * j=(unsigned int *)0xc0000;
// 子程序接口
void Delay(unsigned int nDelay); // 延时子程序
main()
{
unsigned int uLED[4]={1,2,4,8}; // 控制字,逐位置1: 0001B 0010B 0100B 1000B
int i;
InitSysCtrl(); // 初始化DSP运行时钟
while ( 1 )
{
for ( i=0;i<4;i++ )
{
LBDS=uLED[i]; // 正向顺序送控制字
Delay(256); // 延时
}
for ( i=3;i>=0;i-- )
{
LBDS=uLED[i]; // 反向顺序送控制字
Delay(256); // 延时
}
}
}
void Delay(unsigned int nDelay)
{
int ii,jj,kk=0;
for ( ii=0;ii<nDelay;ii++ )
{
for ( jj=0;jj<512;jj++ )
{
kk++;
}
}
}
使用CCS的memory查看0xc0000地址的内容,发现从0xc0000开始一片地址的值为0xffff,但从0xc0000地址开始,每隔8位,其值会根据程序变化。0x000C0000 0xFFF4 0xFFFF 0xFFFF
0x000C0003 0xFFFF 0xFFFF 0xFFFF
0x000C0006 0xFFFF 0xFFFF 0xFFF4
0x000C0009 0xFFFF 0xFFFF 0xFFFF
0x000C000C 0xFFFF 0xFFFF 0xFFFF
0x000C000F 0xFFFF 0xFFF4 0xFFFF
0x000C0012 0xFFFF 0xFFFF 0xFFFF
0x000C0015 0xFFFF 0xFFFF 0xFFFF
0x000C0018 0xFFF4 0xFFFF 0xFFFF
0x000C001B 0xFFFF 0xFFFF 0xFFFF
0x000C001E 0xFFFF 0xFFFF 0xFFF4
0x000C0021 0xFFFF 0xFFFF 0xFFFF
0x000C0024 0xFFFF 0xFFFF 0xFFFF
0x000C0027 0xFFFF 0xFFF4 0xFFFF
0x000C002A 0xFFFF 0xFFFF 0xFFFF
0x000C002D 0xFFFF 0xFFFF 0xFFFF
0x000C0030 0xFFF4 0xFFFF 0xFFFF
0x000C0033 0xFFFF 0xFFFF 0xFFFF
0x000C0036 0xFFFF 0xFFFF 0xFFF4
0x000C0039 0xFFFF 0xFFFF 0xFFFF
0x000C003C 0xFFFF 0xFFFF 0xFFFF
0x000C003F 0xFFFF 0xFFF4 0xFFFF
0x000C0042 0xFFFF 0xFFFF 0xFFFF
0x000C0045 0xFFFF 0xFFFF 0xFFFF
0x000C0048 0xFFF4 0xFFFF 0xFFFF
0x000C004B 0xFFFF 0xFFFF 0xFFFF
0x000C004E 0xFFFF 0xFFFF 0xFFF4
0x000C0051 0xFFFF 0xFFFF 0xFFFF
0x000C0054 0xFFFF 0xFFFF 0xFFFF
类似这样。
按理说应该只有0xc0000一个地址的值产生变化才对,为什么后续地址每隔8位也会跟着一起改变?是跟存储方法有关吗? |