1

我在我的 ARM STM32F407VG 上写入内存时遇到问题。我正在使用 Keil 对其进行编程并将其用于嵌入式系统类。我们刚从 ASSEMBLY 转到 C,我仍然熟悉 CMSIS。

赋值本身相当简单:生成 5000 个随机数并将它们放入一个数组中。然后测试这个数组的素数并将它们放在一个数组中。任务本身并不算太糟糕,但我在外围设备方面遇到了麻烦。具体来说,虽然我在编译过程中对 RNG 没有任何问题,但在写入内存时确实遇到了很多问题。

在 ASSEMBLY 中,我们能够直接写入内存,而我们在 C 语言中对 ARM 进行编程的介绍中的幻灯片看起来很相似。它让你声明一个指向你初始化为 FLASH 开头的地址的指针 (0x20000000)。然后,您只需为该地址分配一个数字并存储它。实际上这并没有成功,所以我怀疑我需要配置闪存外围设备。后者有大量我们没有涵盖的命令,当我尝试最基本的命令时,我不断收到大量错误。

我的问题是:我需要配置闪存外围设备还是可以通过声明一个指针并写入它来写入内存?如果不是,我在下面的代码中的 FLASH 外设命令有什么问题,我在哪里可以找到如何配置它的示例?FLASH上的帮助文件很大,我不知道什么是必要的,什么不是。

#include "stm32f4_discovery.h"
#include <stm32f4xx.h>

//#define   StoreAddress    (uint32_t*) 0x20000000;

int main(){     
    uint32_t        RandomNumber;
    uint32_t        StoreAddress;

    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);
    RNG_Cmd(ENABLE);
    RNG_GetFlagStatus(RNG_FLAG_DRDY);

    StoreAddress = 0x200000F0;
    RandomNumber = RNG_GetRandomNumber();

    FLASH_Unlock();
    FLASH_Status FLASH_ProgramWord(uint32_t StoreAddress, uint32_t RandomNumber);
    FLASH_Lock();
}       

非常感谢任何帮助。

谢谢,尤西夫

4

0 回答 0