尝试向ADC控制寄存器2(ADC_CR2)写入新值(0x00008000,设置TSVREFE位)。无效。我在存储器(地址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
执行后的内存窗口如下所示(B .行上的断点)0x40012400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x40012410 ...
1条答案
按热度按时间waxmsbnn1#
如果RCC中未启用外设时钟,则无法写入任何外设寄存器。
还要注意,外设使用的任何I/O引脚的GPIO时钟也必须在配置其备用外设功能之前启用。
所有阅读零的寄存器值通常是时钟未被使能的良好指示;对于大多数外围设备,至少一些寄存器的复位状态是非零的。