完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
/*请问下各位 为什么我向IS61C6416AL 写入数据 但读出来的老是等于0呢? 下面我写的程序哪里出错呢 希望各位这点一下*/
#include #include "NUC1xx.h" #include "DrvGPIO.h" #include "DrvSYS.h" /*$$$$$$$$$$$$$$$$$RAM$$$$$$$$$$$$$$$$$$$$$$*/ #define WE_ 0x0100 //PC8; #define ALE 0x0100 //PB8; #define RAMALL_ 0x8000 //PA15; #define I_O 0xFFFFFFFF //PD0_15; 双向 #define sc 0x55555555 #define sr 0 /*$$$$$$$$$$$$$$$$$RAM$$$$$$$$$$$$$$$$$$$$$$*/ uint32_t d,num; void delay_10ms(uint32_t x) { uint32_t i,j; for(;x>0;x--) for(i=200;i>0;i--) for(j=50;j>0;j--) ; } void init_ram(void) { DrvGPIO_Open(E_GPB, 8, E_IO_OUTPUT); DrvGPIO_Open(E_GPA, 15, E_IO_OUTPUT); DrvGPIO_Open(E_GPA, 13, E_IO_OUTPUT); DrvGPIO_Open(E_GPA, 12, E_IO_OUTPUT); DrvGPIO_Open(E_GPC, 8, E_IO_OUTPUT); DrvGPIO_SetBit(E_GPA, 15); //置位ce DrvGPIO_SetBit(E_GPA, 14); //置位OE DrvGPIO_SetBit(E_GPA, 13); //置位UB DrvGPIO_SetBit(E_GPA, 12); //置位LB DrvGPIO_SetBit(E_GPC, 8); //置位WE } void writeRamWords(void) { uint8_t i; uint32_t c=0x03; mtcGPIO_Open_PMD(E_GPD,0x55555555); DrvGPIO_SetBit(E_GPB, 8); ///地址解锁 DrvGPIO_SetPortBits(E_GPD,0x11); ///写地址 DrvGPIO_ClrBit(E_GPB, 8); ///地址锁存 DrvGPIO_ClrBit(E_GPA, 15); ///使能CE DrvGPIO_ClrBit(E_GPC, 8); ///使能WEn DrvGPIO_ClrBit(E_GPA, 13); ///使能UB DrvGPIO_ClrBit(E_GPA, 12); ///使能LB for(i=8;i>0;i--) ; DrvGPIO_SetPortBits(E_GPD,c); ///写入数据 num=c; DrvGPIO_SetBit(E_GPA, 15); // 置位CE DrvGPIO_SetBit(E_GPC, 8); ///置位WEn DrvGPIO_SetBit(E_GPA, 13); //置位UB DrvGPIO_SetBit(E_GPA, 12); //置位LB } void ReadRamWords(void) { uint8_t i; mtcGPIO_Open_PMD(E_GPD,0x55555555); ///设输出模式 DrvGPIO_SetBit(E_GPB,8); ///地址解锁 DrvGPIO_SetPortBits(E_GPD,0x11); ///写地址 DrvGPIO_ClrBit(E_GPB,8); ///地址锁存 mtcGPIO_Open_PMD(E_GPD,0); ///设置输入模式 DrvGPIO_SetBit(E_GPC, 8); ///pc.8=1 WE DrvGPIO_ClrBit(E_GPA, 15); ///使能CE DrvGPIO_ClrBit(E_GPA, 14); //使能OE DrvGPIO_ClrBit(E_GPA, 13); ///使能UB DrvGPIO_ClrBit(E_GPA, 12); ///使能LB for(i=8;i>0;i--) ; d=(DrvGPIO_GetPortBits(E_GPD) & 0xffff); //.读取数据 DrvGPIO_SetBit(E_GPA, 14); //置位oe DrvGPIO_SetBit(E_GPA, 13); //置位UB DrvGPIO_SetBit(E_GPA, 12); //置位LB } int main(void) { init_ram(); DrvGPIO_Open(E_GPC, 10, E_IO_OUTPUT); writeRamWords(); delay_10ms(250); ReadRamWords(); if(num==0) DrvGPIO_SetBit(E_GPC, 10); if(d != 0) DrvGPIO_SetBit(E_GPC, 10); else DrvGPIO_ClrBit(E_GPC, 10); while(1); } // mtcGPIO_Open_PMD 的函数 int32_t mtcGPIO_Open_PMD(E_DRVGPIO_PORT port, int32_t i32Bit) { volatile uint32_t u32Reg; u32Reg = (uint32_t)&GPIOA->PMD + (port*PORT_OFFSET); outpw(u32Reg, i32Bit); return E_SUCCESS; } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard-文件I/O的深入学习之阻塞I/O与非阻塞I/O
307 浏览 0 评论
大神们,想知道你们都用什么ide编程调试器? Arduino IDE?还是 e2studio ?还有其他吗?哪个好用呢
459 浏览 0 评论
825 浏览 0 评论
790 浏览 0 评论
飞凌嵌入式ElfBoard-文件I/O的了解探究之复制文件描述符
717 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 08:49 , Processed in 0.880824 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
370