完善资料让更多小伙伴认识你,还能领取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 ELF 1板卡-CAN编程示例之开发板测试
699 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2350 浏览 1 评论
809 浏览 0 评论
1573 浏览 1 评论
2357 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 01:34 , Processed in 0.638859 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号