完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近学习EMIF_SDRAM,虽然已经成功,但是其中出现的问题实在是令人蛋疼!!!!!!!!!!!!!!!!!!
现在是全局定义。 错误的原因就是三个定义的位置,datacount是将0到1000个数字写入到SDRAM的一个变量,databuffer数组是用来接受从SDRAM中读取的数据的,剩下的两个,一个是SDRAM的首地址,一个是尾地址。 一、现在是正确的情况,运行之后,error=0,标志位i=1; 二、当把定义位置1、2调换以后 运行之后就不能正确的读取SDRAM中的数据了error=3(说明有三次读取的数据有错误),i=2 三、因为这三个的定义我只是在主函数中使用,所以我便将这三个定义转移到了main函数中,作为局部定义使用,同样也会出现和二一样的错误。 求解啊!!! 下面是我的程序: # include "csl.h" # include "csl_pll.h" # include "csl_emif.h" # include "csl_chip.h" # include "stdio.h" # include "csl_gpio.h" unsigned int datacount=0; int databuffer[1000]={0}; int *souraddr,*deminaddr; PLL_Config PLL_SETtiNG={ 0, 1, 6, 0 }; EMIF_Config EMIF_SETTING={ 0x221, 0xFFFF, 0x3FFF, 0xFFFF, 0x00FF, 0x3FFF, 0xFFFF, 0x00FF, 0x1FFF, 0xFFFF, 0x00FF, 0x1FFF, 0xFFFF, 0x00FF, 0x2911, 0x0410, 0x07FF, 0x0131 }; void main () { unsigned int error=0; int i=0; CSL_init (); CHIP_RSET (XBSR,0X0A01); PLL_config (&PLL_SETTING); EMIF_config (&EMIF_SETTING); souraddr=(int*)0x40000; deminaddr=(int *)0x41000; while (souraddr { *souraddr++=datacount; datacount++; } souraddr=(int *)0x40000; datacount=0; while (souraddr { databuffer[datacount++]=*souraddr++; if (databuffer[datacount-1]!=(datacount-1)) { error++; } } if (error==0) { GPIO_RSET(IODIR,0XFF); GPIO_RSET(IODATA,0X80); i=1; } else { GPIO_RSET(IODIR,0XFF); GPIO_RSET(IODATA,0X00); i=2; } while (1); } |
|
相关推荐
1个回答
|
|
unsigned int datacount=0;
int databuffer[1000]={0}; int *souraddr,*deminaddr; 建议: 使用databuffer之前,使用循环将其全部清零。 初始化清零,只会作用到第一个数组元素,后续的全是乱码。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2343 浏览 0 评论
681 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2780 浏览 0 评论
3541 浏览 1 评论
1194 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 17:40 , Processed in 0.619273 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号