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.

[参考译文] MSP432E401Y:将PA0-PA7配置为输入端口

Guru**** 2536770 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1098769/msp432e401y-configuring-pa0-pa7-as-an-input-port

部件号:MSP432E401Y

我想读取PIN PA0-PA7的状态,在我看来这应该是一件非常简单的事情。  但是 ,阅读 SLAU723A的17.4 部分,它有15个步骤来配置GPIO引脚,这从启用端口时钟开始。

我不清楚当您想要读取针脚的状态时,为什么会涉及时钟,我也不明白为什么需要15步才能完成如此简单的操作。

在接下来的一周内尝试完成所有这些步骤之前,我希望有人能告诉我一种设置端口的简单方法,以便我能够读取这8个引脚的值。

谢谢你。

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

    重置后,PAX引脚被配置为输入(GPIOA->DIR=0)。 因为这是您想要的,严格地说,您不需要执行任何操作来配置它们。 您可以从GPIOA->数据读取引脚状态。 (TRM将此称为数据[0xFF],但我使用的是CMSIS定义。) 如果您决定需要输出和/或切换函数,则这些额外步骤(部分)将出现在此处。

    您确实需要为GPIOA外围设备提供("门")总线时钟,以便查看寄存器空间。 这涉及将RCGCGPIO的低序位设置为1,然后等待PRGPIO的低位设置为1 (速度非常快,因此您可能会旋转)。 使用driverlib时,其外观如下所示:

    > SysCtlPeripheralEnable(sysctl_Periph_GPIOA);

    > While (!SysPeripheralReady(sysctl_Periph_GPIOA))/*empty*/;

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

    我仍然无法得到任何有意义的东西。  我正在调试模式下使用汇编代码和CCS。  我写了一个值01到地址0x4005.8608万,它应该为端口A设置RCGCGPIO的低位。 将内存浏览器指向该内存位置,其值为0xFD,并且不会更改是否将其设置为01。

    0x4005.8万处的值也没有改变,因为我正在切换开发板上PA5管座引脚上的电压。

    你能看到我在这里做错了什么吗?

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

    1)抱歉,我忘记了您还需要设置GPIOA->DEN=0xFF (全部8个引脚)。

    2) RCGCGPIO位于0x400FE608,PRGPIO位于0x400FEA08。 如果您能够读取0x4005.8万 (不设置RCGCGPIO),可能其它一些代码已打开GPIOA时钟。

    3) 0x4005.8万是PA0的数据值(仅限)。 要获得全部8位,请查看0x40.0583万FC。

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

    它很有效。  非常感谢。  现在我可以继续处理我的申请。