我可以点亮复位中断点的LED吗

问题描述 投票:0回答:1

基于Cortex-M4,GNU编译器。 我想做的是通过存储指令将一个字存储到属于灯的 GPIOx_ODR(默认输出模式)的地址。所以我可以点亮 LED 而无需做任何进一步的操作(如 RCC 或其他东西) 当处理器跳转到重置处理程序时,它会重定向到只有以下指令的 .text 部分:

Reset_Handler:
    movw r0, #0x0800  //stm32's cortex-m4 manul
    movt r0, #0x4800  
    ldr  r1, [r0,#0x14]

我首先尝试是否可以从 GPIOx_ODR 加载一个字。 但是当我在 qemu 上运行它时,它说:

stm32l431rct6_blink_gnu>qemu-system-arm.exe -s -S -M netduinoplus2 -nographic -kernel blink_image.elf
qemu: fatal: Lockup: can't escalate 3 to HardFault (current priority -1)

R00=00000000 R01=00000000 R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=464c4558 R14=fffffff9 R15=00000000
XPSR=40000003 -Z-- A handler

我连字都不会读,我怎么写?,到底怎样才能用最少的操作点亮一个LED

arm embed qemu startupscript cortex-m4
1个回答
0
投票

我连字都不会写,怎么写呢,到底怎么点亮一个 操作量最少的LED

我建议先阅读文档。 GPIO 数字部分在复位后NOT 启用,因为您需要在其中一个 RCC 寄存器中启用 GPIO 时钟。

© www.soinside.com 2019 - 2024. All rights reserved.