当前位置: 代码迷 >> WinCE >> 控制2440的GPIO,遇到一个特别奇怪的有关问题
  详细解决方案

控制2440的GPIO,遇到一个特别奇怪的有关问题

热度:168   发布时间:2016-04-28 13:35:04.0
控制2440的GPIO,遇到一个特别奇怪的问题:
EBOOT中,遇到一个特别奇怪的问题:
GPG11是一个控制脚位,控制一个三极管,来控制电源。

volatile S3C2440A_IOPORT_REG *s2440IOP = (S3C2440A_IOPORT_REG *)OALPAtoVA(S3C2440A_BASE_REG_PA_IOPORT, FALSE);
s2440IOP->GPGCON = ((s2440IOP->GPGCON & ~(0x3 << 22)) | (0x1 << 22)); // 
s2440IOP->GPGDAT |= (0x1 << 11);
EdbgOutputDebugString("s2440IOP->GPGCON[%x] s2440IOP->GPGDAT: 0x%x\r\n", s2440IOP->GPGCON, s2440IOP->GPGDAT);

如果我不加EdbgOutputDebugString,s2440IOP->GPGDAT |= (0x1 << 11);就无效,读出也是为0,如果加了这一行,就有效,读出
也是为1

------解决方案--------------------
这个现象很奇怪,代码上没看出什么问题,循环语句中的内容吗?
------解决方案--------------------
不加你怎么知道读出的为0?
------解决方案--------------------
外接负载太重。呵呵,后面有个大电容,搞死我也,那时候。我以前遇到情况如此,不知道楼主如何了。