在线求解!!ARM 数组写的跑马灯的问题!

[复制链接]
2990|6
 楼主| shimon 发表于 2013-5-4 18:19 | 显示全部楼层 |阅读模式
#define rGPBCON (*(volatile unsigned*)0x56000010)
#define rGPBDAT (*(volatile unsinged*)0x56000014)
#define rGPBUP  (*(volatile unsigned*)0x56000018)

void delay(long z);
int main(void)
{
        rGPBCON=rGPBCON &=(~((3<<16)|(3<<14)|(3<<12)|(3<<10)|(3<<0)));
        rGPBCON |=((1<<16)|(1<<14)|(1<<12)|(1<<10));
        rGPBUP   =0x7ff;


    unsigned char led[]={0x7df,0x7bf,0x77f,0x6ff};
    unsigned int i;
        while(1)
        {
                for(i=0;i<4;i++)
                {
                        rGPBDAT=led[i];
                        delay(200000);
                }
        }
}

void delay(long z)
{
        while(z--);
}

程序如上,编译时3个错误,提示数组初始化那儿没法在下面的语句块中出现!求解!!!
 楼主| shimon 发表于 2013-5-4 18:20 | 显示全部楼层
晕 ,忘记给分了,头次发帖。。。。。
 楼主| shimon 发表于 2013-5-4 18:22 | 显示全部楼层
src\跑马灯5.C(13): error:  #268: declaration may not appear after executable statement in block

这是错误提示!有没有人啊!!!!
我是祝大叔 发表于 2013-5-4 23:59 | 显示全部楼层
同为新人,顶一下。但是我也刚学不久,不知道是什么原因,希望有高手来帮你解决。
江枫渔火 发表于 2013-5-5 12:33 | 显示全部楼层
声明语句要放在代码块的最前面。
unsigned char led[]={0x7df,0x7bf,0x77f,0x6ff};
    unsigned int i;
这两句往往前面放看看。
weicz 发表于 2013-5-5 13:29 | 显示全部楼层
江枫渔火 发表于 2013-5-5 12:33
声明语句要放在代码块的最前面。
unsigned char led[]={0x7df,0x7bf,0x77f,0x6ff};
    unsigned int i;

正解
sweet_smile 发表于 2014-1-16 01:37 | 显示全部楼层
#define rGPBCON (*((volatile unsigned *)0x56000010))
#define rGPBDAT (*((volatile unsigned *)0x56000014))  // 你的unsigned 让我中了半天 呵呵
#define rGPBUP  (*((volatile unsigned *)0x56000018))

void delay(long z);

int main(void)
{       
                int i;
                unsigned int led[]={0x7DF, 0x7BF, 0x77F, 0x6FF}; // 确实要放在前面 unsigned char 最大到 0xFF ,芯片手册[0-10] 位, 不是[0-31]

                rGPBDAT |= (0xF<<5);

        rGPBCON &=(~((3<<16)|(3<<14)|(3<<12)|(3<<10)));
        rGPBCON |=((1<<16)|(1<<14)|(1<<12)|(1<<10));
        
                rGPBUP |=(0xF<<5);
               
        while(1)
        {
                               
                for(i=0; i<4; i++)
                {
                        rGPBDAT = led[i];
                        delay(500000);
                }
        }
}

void delay(long z)
{
        while(z--);
}
感谢楼上各位指点,我也是菜鸟~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部