如何在STM32L4x6中查找寄存器的地址

时间:2016-06-24 17:13:05

标签: assembly stm32ldiscovery

我正在使用NUCLEO-L476RG板。 我正在尝试切换电路板中的LED。我必须将寄存器值设置为0x01以启用端口A的时钟。

请帮助我找到寄存器“ AHB2外设时钟使能寄存器(RCC_AHB2ENR)”的地址为0x01。

我正在汇编编程,因此我直接找到了地址。

我在这里找到了GPIO部分的地址:

LDR R0, =0x48000000; GPIOA_MODER address
LDR R1, =0xABFFF7FF; GPIOA_MODER value
STR R1, [R0];

LDR R0, =0x48000004; GPIOA_OTYPER address
LDR R1, =0x00000000; GPIOA_OTYPER value
STR R1, [R0];

LDR R0, =0x48000014; GPIOA_ODR address
LDR R1, =0x00000000; GPIOA_ODR value
STR R1, [R0];

请指导我如何找到寄存器的地址。谢谢!

此处的产品详情: http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-mcu-nucleo/nucleo-l476rg.html

我可能错了,但我在这里计算了地址:任何人都可以确认:

#define RCC_BASE              (AHB1PERIPH_BASE + 0x1000)
#define AHB1PERIPH_BASE       (PERIPH_BASE + 0x00020000)
#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address */

因此RCC_BASE = 0x40000000 + 0x00020000 + 0x1000 + 0x4C = 0x4002104c

1 个答案:

答案 0 :(得分:0)

对我来说这看起来很好,就是说,你的意思是 -

RCC_BASE =    0x40021000
RCC_AHB2ENR = 0x4002104C