我想点亮STM32F4发现板上的LED。处理器是STM32F429ZIT6。我的汇编代码如下:
TTL LLED
AREA Myprog, CODE, READONLY
ENTRY
EXPORT __main
__main
LDR r5,=0x40021800; MODERG
LDR r7,=0x4002180C; GPIOG_PUPDR
MOV r8,#0x04000000
STR r8, [r5]
STR r8, [r7]
LDR r8,=0x00000000; to set PG13
STR r8,[r6]
MOV r5,#0x20000000
MOV r8,#0xFFFFFFFF
STR r8, [r5]
END
我用ST-Link调试器检查了地址0x40021800中的内存,但是在STR命令之后没有变化,尽管寄存器的值是正确的。 ST的文档是如此糟糕,完全没有例子。在Internet 0关于程序集和ARM的信息。在书中有一个关于UART的例子,但没有关于GPOI的例子。我花了整个太阳,我现在变得疯狂。 HEEEEEEELP !!!!
答案 0 :(得分:4)
首先,我想确保你知道this site。 如果您还没有,请从左栏中获取“Programming Manual”。 但更重要的是你得到了“User's Manual”。
现在,为了获得有关ARM Cortex-M指令集(由ARM提供)的详细文档,请访问ARM信息中心并查看Cortex-M4 Generic User Guide。 Cortex-M4 Technical Reference Manual
中还有时间信息不幸的是我无法直接回答这个问题,因为我没有STM微控制器的经验,但无论如何我都能为你提供帮助。
有关GPIO引脚的信息,请打开用户手册(DM00031020.pdf),也称为RM0090,并阅读第8章。
我还找到了GPIO tutorial,这可能会有所帮助。
虽然我还没有使用STM,但我认为它们可以制造出精密的微控制器;这不是我见过的最糟糕的文件(所以你很幸运)。
通过阅读我提供的资源,我可以告诉你,你需要......
由于我的知识并不是特定于这个产品,我真的不能走得更远。 - 但您也可以在my.st.com和ARM Connected Community
找到帮助答案 1 :(得分:4)
在STM32中(与大多数Cortex-M3微控制器一样),您首先需要为外设启用时钟来修改其任何寄存器。因此,在GPIOG寄存器中设置任何内容之前,需要在相应的RCC寄存器中启用该时钟,可能是RCC-> AHBENR,该位将为RCC_AHBENR_GPIOGEN。这几乎适用于任何外设,如GPIO,I2C,SPI,定时器......这些"时钟使能的默认值" 99%的情况下比特为0(除少数例外)。