TI中文支持网
TI专业的中文技术问题搜集分享网站

关于往寄存器写入数据的问题

你好,如果我已经知道寄存器的地址,想在CCS里面用C语言往这个地址里面写入数据,如下:

#include "gpio.h"

#include "soc_C6748.h"

 #include "hw_psc_C6748.h"

#include "lcdkC6748.h"

#include "demoCfg.h"

#include "hw_types.h"

void main(void)

{  HWREG(0X01E1000C)=0XFFFFFFFF;

 HWREG(0X01E26010)=0XFFFFFDFF;

HWREG(0X01E26038)=0XFFFFEFFF;

HWREG(0X01E26088)=0XFFFFCFFF;

HWREG(0X01E26018)=0X00000200;  

HWREG(0X01E26044)=0X00001000;  

HWREG(0X01E26090)=0X00001000;

HWREG(0X01E26094)=0X00002000;

}

 

HWREG已经在hw_types.h定义了,但是我在Debug之后用step into 功能在memory Browser 里面发现,相对应的寄存器地址里面的内容根本没有改变,32位都是0.请问是出了什么问题呢?我用的是TMS320C6748 DSP Development Kit (LCDK)

noaming:

你好,你描述的“  HWREG(0X01E1000C)”,这个具体是什么内容?

noaming:

最简单的写32位寄存器方法是:

*(unsigned int *)0x…. =  0x….;

第一个0x后面跟的是寄存器在memory map中的物理地址。

Xu Jiang:

回复 noaming:

您好,我用了您的方法还是写不进去,难道这款控制器有什么写保护的地方吗?还是我写之前得设置一些东西?有没有写使能的寄存器?

noaming:

回复 Xu Jiang:

您好,具体写的是哪个寄存器?

Xu Jiang:

回复 noaming:

DIR01, 就是控制输入输出的那个寄存器,地址是0X01E26010。

noaming:

回复 Xu Jiang:

我直接这一句语句执行后,数据就写进去了啊。。。

Xu Jiang:

回复 noaming:

谢谢你,原来是因为我之前定义的器件出错误了,麻烦再问您一个问题,我现在想写入寄存器CLR_DATA01 地址是0X01E2601C,但是写不进去,之前的DIR01可以写进去,请问这是为什么啊?

Xu Jiang:

回复 noaming:

其实我就是想把一个GPIO的电平拉低,然后让板子上的LED灭掉,我想从最基本的开始。。。

noaming:

回复 Xu Jiang:

按理说你已经掌握了写寄存器的方法,因此不应该再出错。所以请注意下面这段:

The GPkPj bit is ignored when GPk[j] is configured as an input

如果你把GPk[j]配置为输入口的话,此时写这个GPkPj bit让它输出为低,这是会被忽略掉的。

这个大概就是原因。

Xu Jiang:

回复 noaming:

谢谢你的建议~我试了一下下面的程序

int main(void)

{ *(unsigned int*)0X01E26010=0X00000000;//使得DIR01每一位都为0,设成输出

  *(unsigned int*)0X01E26014=0X00000000;//使得OUT_DATA01每一位都为0,使得输出为0

}

因为TMS320C6748 LCDK上面的LED之一D7是和GPIO0[9]相连的,但是程序运行的时候D7一直都是亮的,虽然在memory browser里面这些寄存器都成功的被写入了。

请问这是为什么呢?

赞(0)
未经允许不得转载:TI中文支持网 » 关于往寄存器写入数据的问题
分享到: 更多 (0)