我正在使用下面的代码为ARM做一个简单的基于计数器的延迟/等待:
.thumb_func
dowait:
ldr r7,=0x200000
dowaitloop:
sub r7,#1
bne dowaitloop
bx lr 我从dwelch的blinker01 mbed_samples中获得了这个函数,它在其他led闪烁类型的示例程序中工作得很好。然而,我目前正在开发的程序需要在顶部有.syntax unified,因为我使用的是Thumb-2指令(例如using )。
我怀疑".syntax unified“是问题所在,因为我使用了已知有效的blinker01 example并添加了.syntax unified,但当我上传到我的主板时,它不再工作了。
虽然我还没有得到所有的gdb stuff figured out来证明这一点,但这个函数似乎没有计数/延迟。
有没有一种不同的方法来重写这个“延迟”函数来使用统一的/ Thumb-2语法?
发布于 2011-11-10 22:21:58
当您希望指令更新标志时,您需要使用SUBS。
.syntax unified
.thumb_func
dowait:
ldr r0,=0x200000
dowaitloop:
subs r0,#1
bne dowaitloop
bx lr 另请注意: R7不是一个粗略的寄存器,所以在使用"C“代码中的R7函数的情况下,会出现错误,因为编译器不希望修改dowait。这就是我把它改成R0的原因。
https://stackoverflow.com/questions/8074883
复制相似问题