本帖最后由 长的帅怪我落 于 2016-8-16 16:57 编辑
我在用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,并没用变。。。这就比较尴尬了。
写了这么多,就是想问下,怎么临时改变DIR寄存器的值。。好了我说完了,麻烦大神看下。。
忘了说,用的是ccs6 tms320f28335 |