メモリマップとビットSTM32で学びます

  STM32は、32個のチップである0x00000000のより〜0xFFFFFFFFの4Gは、チップの設計では、ARMアーキテクチャの設計に使用される32ビットのアドレス空間、ST(ST)会社のARMベースであることを意味しますオンチップ・ペリフェラルは、自分を追加します。

注意:これは、すなわち、1バイト1バイトのアドレス空間であり、

  ARMが提供しています。

ベンダー固有のメモリ511メガバイトのストレージベンダー固有のコード

プライベート周辺バス1M物理バス

ときに外部デバイスの1.0ギガバイトに十分なチップ・ペリフェラル、この領域の外部拡張

Extermal RAM 1.0ギガバイトRAM容量が拡張この領域で、十分ではない場合には

等GPIOポート、タイマなどのこの分野における周辺0.5ギガバイトペリフェラル

ランタイムデータを格納するためのSRAMの0.5ギガバイト

コード(フラッシュ)0.5ギガバイトは、店舗コードと対応するデータに使用されています 

 

ST ARMは、会社の分割に応じて、対応する周辺機器を追加しました

 

 例のGPIOポート:私たちは、GPIOポートが実際に動作しているアドレス0x40020000〜0x400223FFレジスタを操作します

STのパッケージ次のとおりです。

 

GPIO_TypeDef *、ポインタ型構造であり、この構造体のアドレスは、各ポート番号のベースアドレスであります

 

アドレスは次のように計算される:ベースアドレス0x00020000のPERIPH_BASE装置プラスAHB1、AHB1の宛先アドレスとオフセットアドレスをプラスオフセットアドレスは、各GPIOポートのベースアドレスであり、各ポートは、レジスタに結合しましたレジスタのアドレスを取得することができますオフセット。

GPIOFレジスタを書き換えます

#define GPIOF_BASEADDR   0x40021400
#define rGPIOF_MODER    *(uint32_t *)(GPIOF_BASEADDR+0x00)
#define rGPIOF_OTYPER   *(uint32_t *)(GPIOF_BASEADDR+0x04)
#define rGPIOF_OSPEEDR  *(uint32_t *)(GPIOF_BASEADDR+0x08)
#define rGPIOF_PUPDR    *(uint32_t *)(GPIOF_BASEADDR+0x0C)


void LED_myCOnfig(void)
{
    RCC->AHB1ENR |= (1<<5);
    rGPIOF_MODER &=~ (3<<12);
    rGPIOF_MODER |= (1<<12);
    rGPIOF_OTYPER &=~ (1<<6);
    rGPIOF_OSPEEDR &=~ (3<<12);
    rGPIOF_OSPEEDR |= (2<<12);
    rGPIOF_PUPDR &=~ (3<<12);
}

位带:

 

おすすめ

転載: www.cnblogs.com/whpl22-Blog/p/11270536.html