工具/软件: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。
我出了什么问题?
编辑
优化已完全关闭