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.

[参考译文] 编译器/TMS320F28062:切换引脚不工作

Guru**** 2560390 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/636951/compiler-tms320f28062-toggleing-pins-is-not-working

器件型号:TMS320F28062

工具/软件:TI C/C++编译器

您好!

同样、我对 f28062有一个非常奇怪的行为。 当我具有以下 while 环路时  

while (1){GpioDataRegs.GPADD.bit.GPIO6

= 1;GpioDataRegs.GPADD.bit.GPIO7 = 0;

GpioDataRegs.GPADD.bit.GPIO6 = 0;GpioDataRegs.GPADD.bit.GPIO7 = 1;

GpioRegs.GPO6 = 0;GpioDataRegs.GPIO6 = 0;GpiDataRegs.GPIO6 = 0 GpioDataRegs.GPADAT.bit.GPIO7=0;

} 

在循环结束时、我预计 GPIO7为低电平、但为n`t μ A。 最后、它仍然为高电平(否、我没有n`t 将断点设置为错误的位置、断点在第一行中)

代码在第一行停止、点击"Run"按钮、调试器再次在第一行停止、GPIO7仍然为高电平。 我可以在寄存器和示波器中看到它。

但是、如果我逐行单步执行代码行、它就可以正常工作。 为什么?

n`t 这一点、如果我设置任何断点并让代码运行、我可以看到、当 GPIO6切换至1000000次时、GPIO7始终为高电平、并且一段时间内只会变为低电平。

代码时、我会看到它

while (1){

GpioDataRegs.GPADD.bit.GPIO7 = 1;

GpioDataRegs.GPADD.bit.GPIO7 = 0;

} 

GPIO7会像应该那样进行切换。

我想、好的、然后我将尝试使用 GPATOGGLE 的另一种方法。 代码如下:


while (1){ GpioDataRegs.GPATOGGLE.all = 6; }

在这里、我希望 GPIO6在高电平和低电平之间切换、但它不执行任何操作。 切换寄存器为0、GPADAT 中的相应位也保持为0。


我出了什么问题?

编辑

优化已完全关闭