This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

5509的按键扫描程序从CCS3.3导入到CCS5.5中报错



老师你们好,我在做5509的按键扫描实验时,通过EMIF的SDRAM来判断按键是否按下,遇到以下问题:

1、CCS3.3环境下,程序没有任何问题的,但是在ccs5.5环境下,“CHIP_RSET(XBSR,0x0a01); //EMIF为全EMIF接口” 这一句的前面有个问号,意思说是语法错误。但是能通过编译,没有报错。我查了很多资料,这一句又确实没有问题,不知道是怎么回事?

2、dubug后运行,此时还没有按下开发板的按键,都会立即输出K1 press。

下面是程序代码:

#include <csl.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_chip.h>
#include <stdio.h>

Uint16 x;
Uint16 button;
Uint32 y;
CSLBool b;


unsigned char k1_down;
unsigned int datacount = 0; //将0到1000个数字写入到SDRAM的一个变量
int databuffer[1000] ={0}; //databuffer数组是用来接受从SDRAM中读取的数据
int *souraddr,*deminaddr;


/*锁相环的设置*/
PLL_Config myConfig = {0,1,24,1};
/*SDRAM的EMIF设置*/
EMIF_Config emiffig = {
0x0221, //EMIF全局控制寄存器EGCR;
0xFFFF, //EMIF初始化寄存器
0x3FFF, //ce0_1;MTYPE=001B,16 位异步存储器;
0xFFFF, //ce0_2;
0x00FF, //ce0_3;
0x1FFF, //ce1_1;MTYPE=000B 8 位异步存储器;
0xFFFF, //ce1_2;
0x00FF, //ce1_3;
0x1FFF, //ce2_1;MTYPE=001B 16位异步存储器;
0xFFFF, //ce2_2;
0x00FF, //ce2_3;
0x7FFF, //ce3_1;
0xFFFF, //ce3_2;
0x00FF, //ce3_3;
0x2911, //SDC1;TRC = 8 ;SDSIZE = 0;SDWID = 0;RFEN = 1;TRCD = 2;TRP = 2
0x0410, //SDPER;7ns *4096
0x07FF, //SDINIT;
0x0131 //SDC2;SDACC = 0;TMRD = 01;TRAS = 0101;TACTV2ACTV = 0001;
};

void main()
{
CSL_init(); //初始化CSL库
CHIP_RSET(XBSR,0x0a01); //EMIF为全EMIF接口
PLL_config(&myConfig); //设置系统的运行速度为144MHz
EMIF_config(&emiffig); //初始化DSP的外部SDRAM

souraddr = (int*)0x400001; //向SDRAM中写入数据400001,表示souraddr在内存中的地址是400001
*souraddr = 0x00fe; //写CE2空间,即对功能寄存器组设置,选上按键寄存器组;CE2 地址写为 1111 1110
while(1)
{
button = *souraddr; //读CE2空间,相当于将按键寄存器组的数读出
if(!(button&0x0001)) // 0000 0000 取反为 1111 1111
{
if(k1_down==0)
{
printf("K1 press\n"); // button = 1111 1110
k1_down = 1;
}
}
else
{
k1_down = 0;
}
}
}

麻烦各位老师,帮我看看问题出在哪里,谢谢。