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