stm32写入rw寄存器没有效果

use*_*356 0 embedded assembly stm32

尝试将新值(0x00008000,设置 TSVREFE 位)写入 ADC 控制寄存器 2 (ADC_CR2)。没有效果。我在内存(地址 0x40012408)中看到未更改的值(重置后为 0x00000000)。我应该配置一些东西才能写入该寄存器吗?

为了测试我尝试了这个实验例程:

__main      PROC
    EXPORT  __main
    LDR     R0, =ADC1_ADDR
    ADD     R0, #ADC_CR2_OFFSET
    MOV     R1, #0x00008000
    STR     R1, [R0]
    B   .
        
    ENDP

ADC1_ADDR               EQU 0x40012400
ADC_CR2_OFFSET          EQU 0x08

    END
Run Code Online (Sandbox Code Playgroud)

执行后内存窗口如下所示(断点在 B . 行)

0x40012400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x40012410 ...
Run Code Online (Sandbox Code Playgroud)

Cli*_*ord 6

如果 RCC 中尚未启用外设时钟,则无法写入任何外设寄存器。

另请注意,在配置其备用外设功能之前,还必须启用外设使用的任何 I/O 引脚的 GPIO 时钟。

所有寄存器值读数为零通常很好地表明时钟未启用;对于大多数外设来说,至少某些寄存器的复位状态是非零的。