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

关于GPBDIR的一点困惑

我在用GPIO模拟I2C的时候,需要SDA改变输出方向,然后查了下DIR是方向寄存器,如下

EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; //
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

EDIS;

在这里初始化使得GPIO32为输出功能。然后,在开始I2C发送数据等待应答的时候,需要改变该脚的输出方向,且改为输入。如下

 GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入

重点就是在执行完这句后,DIR寄存器并没有按照我想的变成0,还是1;

这是我单步调试,在执行GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入  之前的寄存器的值,此时值为1;我在单步走完这句后

 却发现该寄存器的值还是1,并没用变。。。这就比较尴尬了。

后面我 又搜索了下EALLOW;   EDIS;,然后我又将初始化gpio那里改成

// EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

//EDIS;

但是,后面GpioCtrlRegs.GPBDIR.bit.GPIO32的值就全部是0,对,一直是0,就不截图了,反正是单步调试的,设置为1 但是却没有任何变化。。写了这么多,就是想问下,怎么临时改变DIR寄存器的值。。好了我说完了,麻烦大神看下。。 

忘了说,用的是ccs6 tms320f28335

b a4:

EALLOW;

….

EDIS;

这两句是必须的,注释了可没法工作,看看C语言吧…

这个实在是….

去掉前面的两个反斜杠

我在用GPIO模拟I2C的时候,需要SDA改变输出方向,然后查了下DIR是方向寄存器,如下

EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; //
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

EDIS;

在这里初始化使得GPIO32为输出功能。然后,在开始I2C发送数据等待应答的时候,需要改变该脚的输出方向,且改为输入。如下

 GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入

重点就是在执行完这句后,DIR寄存器并没有按照我想的变成0,还是1;

这是我单步调试,在执行GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入  之前的寄存器的值,此时值为1;我在单步走完这句后

 却发现该寄存器的值还是1,并没用变。。。这就比较尴尬了。

后面我 又搜索了下EALLOW;   EDIS;,然后我又将初始化gpio那里改成

// EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

//EDIS;

但是,后面GpioCtrlRegs.GPBDIR.bit.GPIO32的值就全部是0,对,一直是0,就不截图了,反正是单步调试的,设置为1 但是却没有任何变化。。写了这么多,就是想问下,怎么临时改变DIR寄存器的值。。好了我说完了,麻烦大神看下。。 

忘了说,用的是ccs6 tms320f28335

user4671742:

回复 b a4:

我前面的都是用了的,最后是无聊才注释掉的。。就是因为用了

EALLOW;

….

EDIS;导致我后面不能对DIR寄存器进行操作,所以逼不得已才注释掉这两句。

我在用GPIO模拟I2C的时候,需要SDA改变输出方向,然后查了下DIR是方向寄存器,如下

EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; //
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

EDIS;

在这里初始化使得GPIO32为输出功能。然后,在开始I2C发送数据等待应答的时候,需要改变该脚的输出方向,且改为输入。如下

 GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入

重点就是在执行完这句后,DIR寄存器并没有按照我想的变成0,还是1;

这是我单步调试,在执行GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入  之前的寄存器的值,此时值为1;我在单步走完这句后

 却发现该寄存器的值还是1,并没用变。。。这就比较尴尬了。

后面我 又搜索了下EALLOW;   EDIS;,然后我又将初始化gpio那里改成

// EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

//EDIS;

但是,后面GpioCtrlRegs.GPBDIR.bit.GPIO32的值就全部是0,对,一直是0,就不截图了,反正是单步调试的,设置为1 但是却没有任何变化。。写了这么多,就是想问下,怎么临时改变DIR寄存器的值。。好了我说完了,麻烦大神看下。。 

忘了说,用的是ccs6 tms320f28335

b a4:

回复 user4671742:

EALLOW EDIS 是必须的, 这个代码块里才能对DIR操作,如果还有问题那就再查原因

我在用GPIO模拟I2C的时候,需要SDA改变输出方向,然后查了下DIR是方向寄存器,如下

EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; //
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

EDIS;

在这里初始化使得GPIO32为输出功能。然后,在开始I2C发送数据等待应答的时候,需要改变该脚的输出方向,且改为输入。如下

 GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入

重点就是在执行完这句后,DIR寄存器并没有按照我想的变成0,还是1;

这是我单步调试,在执行GpioCtrlRegs.GPBDIR.bit.GPIO32=0; //切换方向输入  之前的寄存器的值,此时值为1;我在单步走完这句后

 却发现该寄存器的值还是1,并没用变。。。这就比较尴尬了。

后面我 又搜索了下EALLOW;   EDIS;,然后我又将初始化gpio那里改成

// EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // GPIO32复用为GPIO功能
GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; // GPIO32设置为输出
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // G

//EDIS;

但是,后面GpioCtrlRegs.GPBDIR.bit.GPIO32的值就全部是0,对,一直是0,就不截图了,反正是单步调试的,设置为1 但是却没有任何变化。。写了这么多,就是想问下,怎么临时改变DIR寄存器的值。。好了我说完了,麻烦大神看下。。 

忘了说,用的是ccs6 tms320f28335

user4671742:

自己解决了,原因是我多个地方改了DIR的值,然后发现有一个地方没有加EALLOW;EIDS;导致出了点问题,后面我把只要是需要保护的寄存器都加上EALLOW;就正常了。。唉,这么个问题浪费我几天

赞(0)
未经允许不得转载:TI中文支持网 » 关于GPBDIR的一点困惑
分享到: 更多 (0)