STM32F4xx-在C中写入内存

STM32F4xx-在C中写入内存,c,memory,keil,peripherals,C,Memory,Keil,Peripherals,我的手臂STM32F407VG上的内存写入有问题。我正在使用Keil对其进行编程,并将其用于一个嵌入式系统类。我们刚从组装转移到C,我仍然熟悉CMSIS 赋值本身相当简单:生成5000个随机数并将它们放入一个数组中。然后测试这个数组中的素数,并将它们放入一个数组中。任务本身并不太糟糕,但我在外围设备方面遇到了麻烦。具体地说,虽然我在编译过程中对RNG没有任何问题,但我确实在写入内存时遇到了很多问题 在汇编中,我们可以直接写入内存,在我们的介绍中,用C语言编程ARM的幻灯片看起来很相似。它让您声明

我的手臂STM32F407VG上的内存写入有问题。我正在使用Keil对其进行编程,并将其用于一个嵌入式系统类。我们刚从组装转移到C,我仍然熟悉CMSIS

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

在汇编中,我们可以直接写入内存,在我们的介绍中,用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();
}       
非常非常感谢您的帮助

谢谢,
Yusif

有关flash编程和flash功能的信息太少。我们不知道flash的确切语义/行为,以及它应该如何编写。但是写FLASH\u Status FLASH\u programmworduint32\u t StoreAddress,uint32\u t random number肯定是错误的;因为它所做的只是声明一个函数,而不是调用它。在闪存ROM中存储临时数据似乎非常不切实际。您的董事会是否没有RAM,或者您是否被明确禁止使用RAM?谢谢大家的建议。看来我误解了任务;我们不应该给FLASH写东西,尽管那将是以后的任务。教授今天在办公时间解释了这件事。