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)
如果 RCC 中尚未启用外设时钟,则无法写入任何外设寄存器。
另请注意,在配置其备用外设功能之前,还必须启用外设使用的任何 I/O 引脚的 GPIO 时钟。
所有寄存器值读数为零通常很好地表明时钟未启用;对于大多数外设来说,至少某些寄存器的复位状态是非零的。