This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F2.8377万S:GpioDataRegs的问题

Guru**** 2483995 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/656093/ccs-tms320f28377s-problem-with-gpiodataregs

部件号:TMS320F2.8377万S

工具/软件:Code Composer Studio

我写了一个代码,让连接到Gpio13,GPIO12的启动板上的两个LED同时闪烁,但它不工作

#include "F28x_Project.h"
void main()
{UINT32_t延时;
InitSysCtrl();
伊尼特·格皮奥();
EALLOW;
gpioCtrlRegs.GPADIR.bit.GPIO12=1;
gpioCtrlRegs.GPADIR.bit.GPIO13=1;
gpioCtrlRegs.GPAMUX1.bit.GPIO12=0;
gpioCtrlRegs.GPAMUX1.bit.GPIO13=0;
EDIS;


同时(1)

GpioDataRegs.GPADAT.bit.GPIO13=1;
GpioDataRegs.GPADAT.bit.GPIO12=1;
用于(DELAY = 0;DELAY <200万;DELAY ++);
GpioDataRegs.GPADAT.bit.GPIO13=0;
GpioDataRegs.GPADAT.bit.GPIO12=0;
用于(DELAY = 0;DELAY <200万;DELAY ++);

}
}

尽管这种变体起了作用

#include "F28x_Project.h"
void main()
{UINT32_t延时;
InitSysCtrl();
伊尼特·格皮奥();
EALLOW;
gpioCtrlRegs.GPADIR.bit.GPIO12=1;
gpioCtrlRegs.GPADIR.bit.GPIO13=1;
gpioCtrlRegs.GPAMUX1.bit.GPIO12=0;
gpioCtrlRegs.GPAMUX1.bit.GPIO13=0;
EDIS;


同时(1)

GpioDataRegs.GPASET.bit.GPIO13=1;
GpioDataRegs.GPASET.bit.GPIO12=1;
用于(DELAY = 0;DELAY <200万;DELAY ++);
GpioDataRegs.GPACLEAR.bit.GPIO13=1;
GpioDataRegs.GPACLEAR.bit.GPIO12=1;
用于(DELAY = 0;DELAY <200万;DELAY ++);

}
}

为什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Deepak,

    您关于代码的问题与使用GPADAT和GPASET/GPACLEAR寄存器之间的区别有关。 您使用GPADAT遇到的问题与将寄存器写入到和新PIN值反映回寄存器之间的滞后有关。 当此寄存器在后续的程序语句中用于更改GPIO引脚的状态时,会出现问题。 一种解决方案是在指令之间使用一些NOP,但更好的解决方案是使用GPASET/GPACLEAR寄存器而不是GPADAT寄存器。 在F2837xS技术参考手册(SPRUHX5E)中对此进行了详细说明,该手册从第787页的“6.3 数字通用I/O控制”部分开始。

    我希望这能回答您的问题,如果是,请单击绿色的"已验证答案"按钮。 谢谢你。

    - Ken