繁体   English   中英

臂组件无法访问GPIO

[英]arm assembly cannot access GPIO

我想点亮STM32F4-discovery板上的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的例子。 我花了整整一个太阳,现在正变得疯狂。 嗨!!!

首先,我想确保您了解此网站 如果还没有的话,请从左栏中获取“ 编程手册 ”。 但是,更重要的是您获得了“ 用户手册 ”。

现在,为了获得有关ARM Cortex-M指令集(由ARM提供)的良好文档,请转至ARM信息中心并查看《 Cortex-M4通用用户指南》 Cortex-M4技术参考手册》中还有计时信息。

不幸的是,由于我没有使用STM微控制器的经验,因此我无法为您提供直接的问题答案,但是无论如何我都能为您提供帮助。

有关GPIO引脚的信息,请打开也称为RM0090的用户手册(DM00031020.pdf),并阅读第8章。

我还找到了GPIO教程 ,这可能会有所帮助。

尽管我还没有使用过STM,但我认为它们可以构成出色的微控制器。 而且这不是我所见过的最糟糕的文档(因此,您很幸运)。

通过阅读我提供的资源可以告诉我的是,您需要...

  1. 非常重要: 为GPIO打开时钟电源。 否则,您将无法访问任何寄存器 这可能是错误的。
  2. 设置要使用的GPIO引脚的速度(请参阅参考手册)
  3. 配置引脚(似乎您已经控制住了)
  4. 写入引脚值以更改它们或读取引脚的状态。

由于我的知识不是专门针对该产品的,因此我无法走得更远。 -但是您也可以在my.st.comARM Connected Community上找到帮助。

在STM32中(与大多数Cortex-M3微控制器一样),您首先需要为外设启用时钟以修改其任何寄存器。 因此,在GPIOG寄存器中进行任何设置之前,您需要在适当的RCC寄存器(可能为RCC-> AHBENR)中启用时钟,该位应为RCC_AHBENR_GPIOGEN。 这几乎适用于所有外设,例如GPIO,I2C,SPI,定时器等。在99%的情况下,这些“时钟使能”位的默认值为0(除少数例外)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM