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/TMS320F28377S:CCS/TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/692851/ccs-tms320f28377s-ccs-tms320f28377s

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

 我对 CCS 和嵌入式系统非常陌生。  我 正在尝试引导我了解控制套件中的示例

在以下有关 GPIO 设置的示例中-

我无法完全理解 IF 运算符中使用的条件。 您能不能帮助我、或者如果不能引导我找到一些合适的资源、我可以在这些资源中了解这个主题。

gpioBaseAddr =(uint32 *) GpioCtrlRegs;
对于(regOffset = 0;regOffset < sizeof (GpioCtrlRegs)/2;regOffset++)

//
//Hack、以避免在所有引脚上启用上拉。 GPyPUD 偏移量
//0x0C 位于每个0x40字的寄存器组中。 因为这是 A
//32位指针、地址必须除以2。
//
if (regOffset %(0x40/2)!=(0x0C/2))

gpioBaseAddr[regOffset]= 0x00000000;

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

    该循环旨在清除除 GPyPUD 之外的所有 GpioCtrlRegs、以便 if 语句可确保跳过 GPyPUD 寄存器。

    gpioBaseAddr 将 GpioCtrlRegs 设置为像32位元素数组一样访问、其中 regOffset 用于索引这些元素。 器件上的实际寄存器地址偏移量是以16位字为单位的、这就是我们在计算中将0x40和0x0C 除以2的原因。 (regOffset %(0x40/2))部分使用 regOffset 来计算相对于电流寄存器组(A、B、C 等)开始的偏移。 (0x0C/2)部分是每个组内 GPyPUD 寄存器的偏移量。

    在技术参考手册中查找 GPIO 寄存器、以更好地了解寄存器的排列方式。

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    size (gpiocontrolregs)是否意味着6 (组 A、B、c 等的数量)*12 (控制寄存器的数量)?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SIZE (GpioCtrlRegs)/2是 GpioCtrlRegs 存储器区域中32位寄存器的总数。 它应该是6 (组数)* 0x20 ( 专用于每个端口的32位寄存器的数量)。

    惠特尼