主题中讨论的其他器件: C2000WARE
您好!
我尝试通过直接访问控制寄存器来配置 TMS320F280041 MCU 的 GPIO 31。
我在技术参考手册的第一步:
我非常确定 GPIO 31属于端口 A、这意味着我需要访问 GPAMUX 和 GPAGMUX。
以下是我的问题:
GPAMUX 1/2中的"1/2"是什么意思?
为了控制 GPIO31、我需要写入哪个特定的 GPAMUX 寄存器/位?
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.
您好!
我尝试通过直接访问控制寄存器来配置 TMS320F280041 MCU 的 GPIO 31。
我在技术参考手册的第一步:
我非常确定 GPIO 31属于端口 A、这意味着我需要访问 GPAMUX 和 GPAGMUX。
以下是我的问题:
GPAMUX 1/2中的"1/2"是什么意思?
为了控制 GPIO31、我需要写入哪个特定的 GPAMUX 寄存器/位?
尊敬的 Andy:
我只是想从头开始学习。
一旦我对一切工作方式有了很好的了解、我最终会过渡到使用 driverlib 函数。
好的、从该表中我将需要访问 GPAMUX2和 GPAGMUX2寄存器。
查看 GPAMUX2寄存器、可以看到控制 GPIO31的位30和31。
因此、我必须向 GPAMUX2寄存器的位30和31写入0、这是正确的吗?
我不确定 Code Composer Studio 中会出现什么情况。
[寄存器名称]|= 0x00 //is that correct?(是否正确?)
我强烈建议使用 driverlib、因为这是一种高效的、易于使用的终端。
例如、通过以下简单调用可在 GPIO 模式下设置 GPIO31:
GPIO_setPinConfig(GPIO_31_GPIO31);
您可以在 C2000Ware 中检查 GPIO_setPinConfig()函数的源代码。
我不知道要设置哪个多路复用器选项;将 GMUX 和 MUX 位设置为0可将引脚设置为 GPIO 模式、但这是复位后的默认设置。
当手动设置寄存器时、您需要用 EALLOW/EDIS 宏将寄存器更改包含在内、因为这些寄存器受到保护。
与0x00对或无效。 例如、设置 bit0使用
[REG]|= 0x01
要清除位0、请使用:
[REG]&=~0x01
此致、
Andy
使用以下函数(示例设置):
GPIO_setPinConfig (GPIO_31_GPIO31);
GPIO_setDirectionMode (31、GPIO_DIR_MODE_IN);
GPIO_setQualificationMode (31、GPIO_QUAL_6SAMPLE);
GPIO_setPadConfig (31、 GPIO_PIN_TYPE_PULLUP);
此致、
Andy