ポートの再利用と再マッピング

1.ポート多重化機能

STM32には多くの周辺機器が組み込まれており、これらの周辺機器の外部ピンはGPIOと多重化されています。つまり、GPIOを内蔵ペリフェラルの機能ピンとして多重化できる場合、GPIOを内蔵ペリフェラルとして使用する場合は多重化と呼びます。
 
マルチプレックスポート初期化するには、いくつかの手順があります
1)GPIOポートクロックの有効化。もちろん、ポートの多重化を使用するには、ポートのクロックを有効にする必要があります。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA、ENABLE);
2)多重化されたペリフェラルクロックの有効化。たとえば、ポートPA9とPA10をシリアルポートとして多重化する場合は、シリアルポートクロックを有効にする必要があります。RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1、ENABLE);
3)ポートモードの構成。IOマルチプレックスビットにペリフェラル機能ピンが内蔵されている場合は、GPIOポートのモードを設定する必要があります。GPIOモードがマルチプレックス機能にどのように対応するかについては、マニュアル「STM32中国語リファレンスマニュアルV10」を参照してください。
P110の表「8.1.11ペリフェラルGPIO構成」。ここでは、例としてUsart1を取り上げます。
表から、全二重シリアルポート1を構成する必要があることがわかります。次に、TXピンをプッシュプル多重化出力として構成し、RXピンをフローティング入力またはプルとして構成する必要があります。入力を上げます。
//USART1_TX PA.9 复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
//USART1_RX PA.10 浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
上記のコードの意味は、最初の実験が終了した後に自然に理解されます。ここに要約を示します。したがって、多重化機能を使用する場合は、少なくとも2つのクロックを有効にする必要があります。
1)GPIOクロックの有効化
2)多重化されたペリフェラルクロックの有効化

2、ポートの再マッピング

STM32には、リマップ機能を備えた内蔵ペリフェラルの入力ピンと出力ピンが多数あります。各内蔵ペリフェラルには複数の入力ピンと出力ピンがあることがわかっています。通常、これらのピンの出力ポートは固定されています。設計 エンジニアがピンの方向と機能をより適切に調整 できるようにするために、STM32ペリフェラルに導入されています。ピンコンセプトの再マッピング、つまり デフォルトのポートピンへの周辺機器の追加だけでなく、モードレジスタの再マッピングを設定することにより、この周辺機器のピン は他のポートにマッピングされます。
詳細な手順は次のとおりです。
1)GPIOBクロックを有効にします。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB、ENABLE);
2)シリアルポート1クロックを有効にします。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1、ENABLE);
3)AFIOクロックを有効にします。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO、ENABLE);
4)再マッピングをオンにします。
GPIO_PinRemapConfig(GPIO_Remap_USART1、ENABLE);
 

USART3再マッピングテーブル:

関数の呼び出し:

GPIO_PinRemapConfig( GPIO_PartialRemap_USART3 、ENABLE);
 
 
 
 
 
 

 

おすすめ

転載: blog.csdn.net/m0_46383618/article/details/113870591