Cra*_*aig 1 assembly arm cortex-m3 delay
我正在使用以下代码为 ARM 执行简单的基于计数器的延迟/等待:
.thumb_func
dowait:
ldr r7,=0x200000
dowaitloop:
sub r7,#1
bne dowaitloop
bx lr
Run Code Online (Sandbox Code Playgroud)
我从 dwelch 的blinker01 mbed_samples获得了这个函数,它在其他 LED 闪烁类型的示例程序中运行良好。但是,我目前正在处理的程序需要.syntax unified位于顶部,因为我使用的是 Thumb-2 指令(例如 ITTEE)。
我怀疑“.syntax统一”是问题所在,因为我采用了已知工作的blinker01示例并添加了.syntax unified它,当我上传到我的电路板时它不再工作。
虽然我还没有弄清楚所有的gdb 东西来证明它,但该函数似乎没有计算/延迟。
是否有不同的方法来重新编写这个“延迟”函数以使用统一的/Thumb-2 语法?
SUBS当您希望指令更新标志时,您需要使用。
.syntax unified
.thumb_func
dowait:
ldr r0,=0x200000
dowaitloop:
subs r0,#1
bne dowaitloop
bx lr
Run Code Online (Sandbox Code Playgroud)
另一个注意事项:R7 不是一个 clobber 寄存器,因此如果您使用“C”代码中的 dowait 函数,则会出现错误,因为编译器不希望 R7 被修改。这就是我将其更改为 R0 的原因。
| 归档时间: |
|
| 查看次数: |
4024 次 |
| 最近记录: |