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.

TMS320F28335: 关于GPIO 检测问题

Part Number: TMS320F28335

在配置GPIO过程中,将GPIO0,1均配置为输入,且采样周期为系统时钟,采样次数与系统时钟同步。然后用GPADAT寄存器读取,程序如下:

if (GpioDataRegs.GPADAT.bit.GPIO0==0)

{a=a+1;}

if (GpioDataRegs.GPADAT.bit.GPIO1==0)

{b=b+1;}

用ccs的clock功能发现程序从if (GpioDataRegs.GPADAT.bit.GPIO0==0)到if (GpioDataRegs.GPADAT.bit.GPIO1==0)大概10ns

然后将采样周期改为510个系统时钟,采样次数为6个采样周期,执行上述程序,同样发现程序从if (GpioDataRegs.GPADAT.bit.GPIO0==0)到if (GpioDataRegs.GPADAT.bit.GPIO1==0)大概10ns。

即配置输入限定不影响GPADAT读取时间?按照我的理解,GPADAT读取是对GPIO管脚进行采样,检测该管脚电平高低,采样周期越长,读取的时间也应该越长,不知道是否理解有误?

  • 这些配置都是硬件上的配置,并不影响CPU代码的执行,这是两码事。

    这些限定就是体现在阴影框内的部分。不满足配置的信号就不会通过阴影部分。

  • 谢谢回答,不过代码if (GpioDataRegs.GPADAT.bit.GPIO0==0)执行后,参数a发生变化,说明条件成立,也就是说GPIO确实由高电平变成了低电平,而且通过输入限定,被GPADAT读取。程序从if (GpioDataRegs.GPADAT.bit.GPIO0==0)到if (GpioDataRegs.GPADAT.bit.GPIO1==0)大概10ns,如果认为是程序执行的时间,而且参数发生变化,不是代表这10ns中,IO口电平由高到底被检测通过输入限定了吗,但是通过输入限定的时间可以配置为500个系统时钟,大概是3us。怎么理解这10ns和3us,感觉有冲突

  • 只要GPIO上的输入信号满足要求,便会通过阴影部分,GPADAT的值就会发生相应的变化。这些动作会发生在任何时刻。

    10ns是这几行代码的执行时间,完全是两码事。

  • 明白了,谢谢。