我想读取PIN PA0-PA7的状态,在我看来这应该是一件非常简单的事情。 但是 ,阅读 SLAU723A的17.4 部分,它有15个步骤来配置GPIO引脚,这从启用端口时钟开始。
我不清楚当您想要读取针脚的状态时,为什么会涉及时钟,我也不明白为什么需要15步才能完成如此简单的操作。
在接下来的一周内尝试完成所有这些步骤之前,我希望有人能告诉我一种设置端口的简单方法,以便我能够读取这8个引脚的值。
谢谢你。
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.
我想读取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*/;
1)抱歉,我忘记了您还需要设置GPIOA->DEN=0xFF (全部8个引脚)。
2) RCGCGPIO位于0x400FE608,PRGPIO位于0x400FEA08。 如果您能够读取0x4005.8万 (不设置RCGCGPIO),可能其它一些代码已打开GPIOA时钟。
3) 0x4005.8万是PA0的数据值(仅限)。 要获得全部8位,请查看0x40.0583万FC。