GPIO port and AFIO support(gpio.h)
GPIO(General Purpose Input/Output)ポート・AFIO(Alternate Function Input/Output)サポートライブラリ
GPIO機能の説明
汎用入出力(GPIO)ポートのそれぞれには、2 つの 32 ビット設定レジスタ(GPIOx_CRL、GPIOx_CRH)、2 つの 32 ビットデータレジスタ(GPIOx_IDR、GPIOx_ODR)、32 ビットセット/リセットレジスタ(GPIOx_BSRR)、16 ビットリセットレジスタ(GPIOx_BRR)、32 ビットロックレジスタ(GPIOx_LCKR)があります。
各入出力ポートの特定のハードウェア特性については、データシートに記載されています。汎用入出力(GPIO)ポートの各ポートビットは、ソフトウェアによって以下の動作モードを個別に設定できます。
入力フローティング
入力プルアップ
入力プルダウン
アナログ
出力オープンドレイン
出力プッシュプル
オルタネート機能プッシュプル
オルタネート機能オープンドレイン
※上記ドキュメントは、参考文献 1.より引用しています。
本レファレンスでは、レジスタを直接操作するためのGPIOレジスタマップ、付随するデータ型や定数、GPIOポート操作API関数について記載しています。
データ型
パブリックメンバー
__io uint32 CRL :ポート設定レジスタ(下位)(GPIOx_CRL)
__io uint32 CRH :ポート設定レジスタ(上位)(GPIOx_CRH)
__io uint32 IDR : ポート入力データレジスタ(GPIOx_IDR)
__io uint32 ODR : ポート出力データレジスタ(GPIOx_ODR)
__io uint32 BSRR : ポートビットセット/リセットレジスタ(GPIOx_BSRR)
__io uint32 BRR : ポートビットリセットレジスタ(GPIOx_BRR)
__io uint32 LCKR : ポート設定ロックレジスタ(GPIOx_LCKR)
パブリックメンバー
gpio_reg_map *regs : GPIOレジスタマップ
rcc_clk_id clk_id : RCCクロック情報 (rcc_clk_id型(列挙型))(*1)
exti_cfg exti_port : 外部割込みポート ※未使用(*2)(*3)
(*2)exti_portは未使用。代わりにdev->exti_portを利用。gpio_exti_port(dev)を利用して下さい。
code:c
typedef enum exti_cfg {
EXTI_PA, /**< Use PAx pin */
EXTI_PB, /**< Use PBx pin */
EXTI_PC, /**< Use PCx pin */
EXTI_PD, /**< Use PDx pin */
EXTI_PE, /**< Use PEx pin */
EXTI_PF, /**< Use PFx pin */
EXTI_PG, /**< Use PGx pin */
EXTI_PH, /**< Use PHx pin */
EXTI_PI, /**< Use PIx pin */
} exti_cfg;
パブリックメンバー
gpio_dev *gpio_device :GPIOデバイス
timer_dev *timer_device :ピンに割り付いているタイマデバイス(存在しない場合はNULL)
adc_dev *adc_device :ピンに割り付いているADCデバイス(存在しない場合はNULL)
uint8 gpio_bit :ピンのGPIOビット番号(0~15)
uint8 timer_channel :タイマチャンネル(無い場合は0)
uint8 adc_channel :ADCチャンネル(無い場合は`ADCx)
GPIO_OUTPUT_PP :出力 (プッシュ・プル)(*1)
GPIO_OUTPUT_OD :出力(オープンドレイン)[* (*2)
GPIO_AF_OUTPUT_PP :オルタネート機能 出力 (プッシュ・プル)
GPIO_AF_OUTPUT_OD :オルタネート機能 出力(オープンドレイン)
GPIO_INPUT_ANALOG :アナログ入力
GPIO_INPUT_FLOATING :入力(フローティング)
GPIO_INPUT_PD :入力(プルダウン)
GPIO_INPUT_PU :入力(プルアップ)
(*1) オープンドレインモード:出力レジスタが“0”のときには N-MOS が有効になり、出力レジスタが“1”のときにはポートはハイインピーダンス状態のままです(P-MOS が有効になることはありません)。
(*2) プ ッシュプルモード:通常の出力です。出力レジスタが“0”のとき N-MOS が有効になり、“1”のときには P-MOSが有効になります。
(*3) オルタネート機能出力:ピンは出力レジスタから切り離され、オンチップペリフェラルの出力信号に接続されます。
パブリックメンバー
__io uint32 EVCR :イベント制御レジスタ(AFIO_EVCR)
__io uint32 MAPR :AFの再配置とデバッグ入出力設定レジスタ(AFIO_MAPR)(*1)
__io uint32 EXTICR1 :外部割り込み設定レジスタ 1(AFIO_EXTICR1)
__io uint32 EXTICR2 :外部割り込み設定レジスタ 2(AFIO_EXTICR2)
__io uint32 EXTICR3 :外部割り込み設定レジスタ 3(AFIO_EXTICR3)
__io uint32 EXTICR4 :外部割り込み設定レジスタ 4(AFIO_EXTICR4)
__io uint32 MAPR2 :AFの再配置・デバッグ入出力設定レジスタ 2(AFIO_MAPR2)(*1)
(*1)AFはオルタネート機能の略
AFIO_EXTI_PA :PAxピン
AFIO_EXTI_PB :PBxピン
AFIO_EXTI_PC :PCxピン
AFIO_EXTI_PD :PDxピン
AFIO_EXTI_PE :PExピン
AFIO_EXTI_PF :PFxピン
AFIO_EXTI_PG :PGxピン
AFIO_EXTI_0 :外部割り込み/イベントライン 0.
AFIO_EXTI_1 :外部割り込み/イベントライン 1.
AFIO_EXTI_2 :外部割り込み/イベントライン 2.
AFIO_EXTI_3 :外部割り込み/イベントライン 3.
AFIO_EXTI_4 :外部割り込み/イベントライン 4.
AFIO_EXTI_5 :外部割り込み/イベントライン 5.
AFIO_EXTI_6 :外部割り込み/イベントライン 6.
AFIO_EXTI_8 :外部割り込み/イベントライン 8.
AFIO_EXTI_9 :外部割り込み/イベントライン 9.
AFIO_EXTI_7 :外部割り込み/イベントライン 7.
AFIO_EXTI_10 :外部割り込み/イベントライン 10.
AFIO_EXTI_11 :外部割り込み/イベントライン 11.
AFIO_EXTI_12 :外部割り込み/イベントライン 12.
AFIO_EXTI_13 :外部割り込み/イベントライン 13.
AFIO_EXTI_15 :外部割り込み/イベントライン 15.
AFIO_EXTI_14 :外部割り込み/イベントライン 14.
AFIO_REMAP_ADC2_ETRGREG :ADC 2 外部トリガレギュラ変換の再配置
AFIO_REMAP_ADC2_ETRGINJ :ADC 2 外部トリガインジェクト変換の再配置
AFIO_REMAP_ADC1_ETRGREG :ADC 1 外部トリガレギュラ変換の再配置
AFIO_REMAP_ADC1_ETRGINJ :ADC 1 外部トリガインジェクト変換の再配置
AFIO_REMAP_TIM5CH4_I :Timer 5 CH4内部再配置
AFIO_REMAP_PD01 :OSC_IN/OSC_OUT に対する、ポート D0/ポートD1 の配置
AFIO_REMAP_CAN_1 :CAN CAN オルタネート機能の再配置 1 (RX on PB8, TX on PB9)
AFIO_REMAP_CAN_2 :CAN CAN オルタネート機能の再配置 2 (RX on PD0, TX on PD1)
AFIO_REMAP_TIM4 :Timer 4 再配置
AFIO_REMAP_TIM3_PARTIAL :Timer 3 部分的な再配置
AFIO_REMAP_TIM3_FULL :Timer 3 完全な再配置
AFIO_REMAP_TIM2_PARTIAL_1:Timer 2 部分的な再配置1(CH1 and ETR on PA15, CH2 on PB3, CH3 on PA2, CH4 on PA3)
AFIO_REMAP_TIM2_PARTIAL_2:Timer 2 部分的な再配置2 (CH1 and ETR on PA0, CH2 on PA1, CH3 on PB10, CH4 on PB11)
AFIO_REMAP_TIM2_FULL :Timer 2 完全な再配置
AFIO_REMAP_USART2 :USART 2 再配置
AFIO_REMAP_USART1 :USART 1 再配置
AFIO_REMAP_I2C1 :I2C1 再配置
AFIO_REMAP_SPI1 :SPI1 再配置
AFIO_REMAP_FSMC_NADV :FSMC_NADV 信号 接続/切断
AFIO_REMAP_TIM14 :Timer 14 再配置
AFIO_REMAP_TIM13 :Timer 13 再配置
AFIO_REMAP_TIM11 :Timer 11 再配置
AFIO_REMAP_TIM10 :Timer 10 再配置
AFIO_REMAP_TIM9 :Timer 9 再配置
AFIO_DEBUG_FULL_SWJ :SW(Serial Wire)とJTAGデバッグ有効
AFIO_DEBUG_FULL_SWJ_NO_NJRST :SW(Serial Wire)とJTAGでバグう有効、ただしNJTRSTは無効
AFIO_DEBUG_SW_ONLY :SW'Serial Wire debug)のみ (JTAG無効, SW-DP有効)
AFIO_DEBUG_NONE :デバッグ無効、全てのJTAGとSWピンはGPIOピンとして自由に利用出来ます`
デバイス
GPIOデバイス
■ gpio_dev *const GPIOA GPIO ポート A デバイス
■ gpio_dev *const GPIOB GPIO ポート B デバイス
■ gpio_dev *const GPIOC GPIO ポート C デバイス
■ gpio_dev *const GPIOD GPIO ポート D デバイス
■ gpio_dev *const GPIOE GPIO ポート E デバイス
■ gpio_dev *const GPIOF GPIO ポート F デバイス
■ gpio_dev *const GPIOG GPIO ポート G デバイス
ピンマップ
■ stm32_pin_info PIN_MAP
PIN_MAPの構成は利用しているボードによって異なります。
以下に定義部の抜粋を示します。stm32_pin_info(ピンマップ型)については、本ページのピンマップ型の項を参照下さい。
code:boad.cpp_PIN_MAP.cpp
{&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */
{&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */
{&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */
{&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */
{&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */
{&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */
{&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */
{&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */
{&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */
{&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */
{&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */
{&gpioa, &timer1, NULL, 11, 4, ADCx}, /* PA11 */
{&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */
{&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */
{&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */
{&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */
{&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */
{&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */
{&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */
{&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */
{&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */
{&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */
{&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */
{&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */
{&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */
{&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */
{&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */
{&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */
{&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */
{&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */
{&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */
{&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */
{&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 */
{&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 */
{&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 */
};
PIN_MAPの配列はピン番号順に並んでいます。
指定したピンに該当するインデックス指定は、ピン番号またまピン名称にて可能です。
例:ピンに割り付いているGPIOデバイスを参照する
code:c
code:c
// Note this needs to match with the PIN_MAP array in board.cpp
enum {
PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13,PA14,PA15,
PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13,PB14,PB15,
PC13, PC14,PC15
};
API関数
■ void gpio_init(gpio_dev *dev)
GPIOデバイスを初期化します。
指定されたデバイスのクロックを有効にし、リセットします。
引数
dev :GPIOデバイス
■ void gpio_init_all(void)
使用可能なすべてのGPIOデバイスを初期化してリセットします。
■ void gpio_set_mode(gpio_dev *dev, uint8 pin, gpio_pin_mode mode)
GPIOピンのモードを設定します。
引数
dev : GPIOポート(GPIOデバイス)
pin : デバイスのピン(0~15)
mode : ピンをに設定するモード(gpio_pin_mode型)
gpio_set_mode()を使って、PB12ピンのモード設定を行う場合、ピン名称よりGPIOポートとデバイスピン番号を求めることが出来ます。ピン番号がPB12の場合、名称から、GPIOポートはB、デバイスピンは10となます。
この変換はPIN_MAPを利用すると簡単に求めることが出来ます。
GPIOポート(GPIOデバイス) :dev = PIN_MAP[PB12].gpio_device;
デバイスのピン :pin = PIN_MAP[PB12].gpio_bit;
PB12ピンをOUTPUTに設定は次のようになります。
code:c
gpio_set_mode(PIN_MAPPB12.gpio_device, PIN_MAPPB12.gpio_bit, GPIO_OUTPUT_PP); これは、pinMode(PB12,OUTPUT);と同等ですが、直接レジスタに設定しているためオーバーヘッドが無い分、高速です。
■ gpio_pin_mode gpio_get_mode(gpio_dev *dev, uint8 pin)
GPIOピンのモードを調べます。
引数
dev : GPIOポート(GPIOデバイス)
pin : デバイスのピン(0~15)
戻り値
モード(gpio_pin_mode型)
利用例
code:cpp
uint16_t mode = gpio_pin_mode(PIN_MAPPB12.gpio_device, PIN_MAPPB12.gpio_bit); ■ exti_cfg gpio_exti_port(gpio_dev *dev)
GPIOポートの対応するafio_exti_portを取得します。
引数
dev : GPIOポート(GPIOデバイス)
戻り値
外部割込みポート
■ void gpio_write_bit(gpio_dev *dev, uint8 pin, uint8 val)
GPIOピンの出力ビットをセットまたはリセットする。
ピンは前もって出力モードに設定されていなければなりません。
digitalWrite()と同機能ですが、オーバーヘッドが少ないため高速です。
引数
dev : GPIOポート(GPIOデバイス)
pin : デバイスのピン(0~15)
利用例
ボード上のLED(PC13ピン)を点滅させる
code:sample1.ino
void setup() {
gpio_set_mode(GPIOC, 13, GPIO_OUTPUT_PP);
}
void loop() {
static uint8_t sw = LOW;
sw = !sw;
gpio_write_bit(GPIOC, 13, sw);
delay(500);
}
■ uint32 gpio_read_bit(gpio_dev *dev, uint8 pin)
GPIOピンの入力状態を判断します。
ピンは前もって入力モードに設定されていなければなりません。
digitalRead()と同機能ですが、オーバーヘッドが少ないため高速です。
引数
dev : GPIOポート(GPIOデバイス)
pin : デバイスのピン(0~15)
利用例
PB12ピンの入力状態を調べます。
code:cpp
gpio_set_mode(PIN_MAPPB12.gpio_device, PIN_MAPPB12.gpio_bit, GPIO_INPUT_FLOATING); uint16_t value = gpio_read_bint(PIN_MAPPB12.gpio_device, PIN_MAPPB12.gpio_bit); ■ void gpio_toggle_bit(gpio_dev *dev, uint8 pin)
出力プッシュプルとして構成されたピンをトグルします。
dev : GPIOポート(GPIOデバイス)
pin : デバイスのピン(0~15)
利用例
ボード上のLED(PC13ピン)を点滅させる
code:sample2.ino
void setup() {
gpio_set_mode(GPIOC,13, GPIO_OUTPUT_PP);
}
void loop() {
static uint8_t sw = LOW;
sw = !sw;
gpio_toggle_bit(GPIOC,13);
delay(500);
}
■ void afio_init(void)
AFIOクロックを初期化し、AFIOレジスタをリセットします。
■ void afio_remap(afio_remap_peripheral remapping)
代替機能の再マップを実行します。
引数
remapping :実行するための再マッピング種別
■ void afio_cfg_debug_ports(afio_debug_cfg config)
JTAGおよびSWデバッグポートを有効または無効にします。
引数
config:デバッグポートの設定
■ void afio_exti_select(exti_num exti, exti_cfg port)
外部割り込みのソース入力を選択します。
引数
exti :外部割り込み
port :ソース入力として使用するピンを含むポート
■ GPIOA_BASE ((struct gpio_reg_map*)0x40020000)
■ GPIOB_BASE ((struct gpio_reg_map*)0x40020400)
■ GPIOC_BASE ((struct gpio_reg_map*)0x40020800)
■ GPIOD_BASE ((struct gpio_reg_map*)0x40020C00)
■ GPIOE_BASE ((struct gpio_reg_map*)0x40021000)
■ GPIOF_BASE ((struct gpio_reg_map*)0x40021400)
■ GPIOG_BASE ((struct gpio_reg_map*)0x40021800)
これらの値は、ポート設定レジスタ(下位 GPIOx_CRLおよび、上位 GPIOx_CRH)の両方に適用されます。
ビットマスクを取得するには、知りたいGPIOポートビットの適切なビット数だけ右にシフトすることができます。
たとえば、GPIOA_CRH_CNF12の値だけをマスクするには、GPIOポートのビット12の設定が、対応するCRHのビット18で開始することに注意してください。 したがって、適切なマスクはGPIOA_BASE->CRH & (GPIO_CR_CNF << 18)です。
ポート設定レジスタのビット定義
■ GPIO_CR_CNF CNFy:ポート x 設定ビット 2ビット(rw)
下位 :7[31:30],6[27:26],5[23:22],4[19:18],3[15:14],2[11:10],1[7:6],0[3:2]
上位 :15[31:30],14[27:26],13[23:22],12[19:18],11[15:14],10[11:10],9[7:6],8[3:2]
設定値:下記の入出力モードがセットされる
GPIO_CR_CNF_INPUT_ANALOG アナログモード
GPIO_CR_CNF_INPUT_FLOATING フローティング入力
GPIO_CR_CNF_INPUT_PU_PD プルアップ/プルダウン付きの入力
GPIO_CR_CNF_OUTPUT_PP 汎用出力プッシュプル
GPIO_CR_CNF_OUTPUT_OD 汎用出力オープンドレイン
GPIO_CR_CNF_AF_OUTPUT_PP オルタネート機能出力プッシュプル
GPIO_CR_CNF_AF_OUTPUT_OD オルタネート機能出力オープンドレイン
■ GPIO_CR_MODE MODEy:ポート x モードビット 2ビット(rw)
下位 :7[29:28],6[25:24],5[21:20],4[17:16],3[13:12],2[9:8],1[5:4],0[1:0]
上位 :15[29:28],14[25:24],13[21:20],12[17:16],11[13:12],10[9:8],9[5:4],8[1:0]
設定値:下記の入出力モードがセットされる
GPIO_CR_MODE_INPUT 入力モード
GPIO_CR_MODE_OUTPUT_10MHZ 出力モード、最大速度 10 MHz
GPIO_CR_MODE_OUTPUT_2MHZ 出力モード、最大速度 2 MHz
GPIO_CR_MODE_OUTPUT_50MHZ 出力モード、最大速度 50 MHz
イベント制御レジスタのビット定義
■ AFIO_EVCR_EVOE [7] 1ビット(rw) :イベント出力イネーブル
■ PORT ポート選択 [6:4] 3ビット(rw) 設定値
AFIO_EVCR_PORT_PA PAを選択
AFIO_EVCR_PORT_PB PBを選択
AFIO_EVCR_PORT_PC PCを選択
AFIO_EVCR_PORT_PD PFを選択
AFIO_EVCR_PORT_PE PRを選択
■ PIN ピン選択 [3:0] 4ビット(rw) 設定値
AFIO_EVCR_PIN_0 Px0を選択
AFIO_EVCR_PIN_1 Px1を選択
AFIO_EVCR_PIN_2 Px2を選択
AFIO_EVCR_PIN_3 Px3を選択
AFIO_EVCR_PIN_4 Px4を選択
AFIO_EVCR_PIN_5 Px5を選択
AFIO_EVCR_PIN_6 Px6を選択
AFIO_EVCR_PIN_7 Px7を選択
AFIO_EVCR_PIN_8 Px8を選択
AFIO_EVCR_PIN_9 Px9を選択
AFIO_EVCR_PIN_10 Px10を選択
AFIO_EVCR_PIN_11 Px11を選択
AFIO_EVCR_PIN_12 Px12を選択
AFIO_EVCR_PIN_13 Px13を選択
AFIO_EVCR_PIN_14 Px14を選択
AFIO_EVCR_PIN_15 Px15を選択
AFの再配置とデバッグ入出力設定レジスタ(AFIO_MAPR)のビット定義
■ AFIO_MAPR_SWJ_CFG [26:24] 3ビット(w) :シリアルワイヤ JTAG 設定
設定値
AFIO_MAPR_SWJ_CFG_FULL_SWJ フル SWJ(JTAG-DP + SW-DP)
AFIO_MAPR_SWJ_CFG_FULL_SWJ_NO_NJRST フル SWJ(JTAG-DP + SW-DP)、NJTRST なし
AFIO_MAPR_SWJ_CFG_NO_JTAG_SW JTAG-DP 無効、SW-DP 有効
AFIO_MAPR_SWJ_CFG_NO_JTAG_NO_SW JTAG-DP 無効、SW-DP 無効
■ AFIO_MAPR_ADC2_ETRGREG_REMAP [20] 1ビット(rw) :ADC2 外部トリガレギュラ変換の再配置
0:ADC2 外部トリガレギュラ変換は EXTI11 に接続されます。
1:ADC2 外部イベントレギュラ変換はTIM8_TRGO に接続されます。
■ AFIO_MAPR_ADC2_ETRGINJ_REMAP [19] 1ビット(rw) :ADC2 外部トリガインジェクト変換の再配置
0:ADC2 外部トリガインジェクト変換は EXTI15 に接続されます。
1:ADC2 外部イベントインジェクト変換は TIM8_Channel4 に接続されます。
■ AFIO_MAPR_ADC1_ETRGREG_REMAP [18] 1ビット(rw) :ADC1 外部トリガレギュラ変換の再配置
0:ADC1 外部トリガレギュラ変換は EXTI11に接続されます。
1:ADC1 外部イベントレギュラ変換は TIM8_TRGO に接続されます。
■ AFIO_MAPR_ADC1_ETRGINJ_REMAP [17] 1ビット(rw) :ADC1 外部トリガインジェクト変換の再配置
0:ADC1 外部トリガインジェクト変換はEXTI15 に接続されます。
1:ADC1 外部イベントインジェクト変換は TIM8_チャネル 4に接続されます。
■ AFIO_MAPR_TIM5CH4_IREMAP [16] 1ビット(rw) :TIM5 チャネル 4 の内部再配置
0:タイマ TIM5_CH4 は PA3 に接続されます。
1:LSI 内部クロックは較正のために TIM5_CH4 入力に接続されます。
■ AFIO_MAPR_PD01_REMAP [15] 1ビット(rw) :OSC_IN/OSC_OUT に対するポート D0/ポートD1 の配置
0:PD0 と PD1 は再配置されません。
1:PD0 は OSC_IN に、PD1 は OSC_OUTに再配置されます。
■ AFIO_MAPR_CAN_REMAP [14:13] 2ビット(rw) :CAN オルタネート機能の再配置
設定値
AFIO_MAPR_CAN_REMAP_NONE CAN_RX は PA11 に、CAN_TX は PA12 に配置
AFIO_MAPR_CAN_REMAP_PB8_PB9 CAN_RX は PB8 に、CAN_TX は PB9 に配置
AFIO_MAPR_CAN_REMAP_PD0_PD1 CAN_RX は PD0 に、CAN_TX は PD1 に配置
■ AFIO_MAPR_TIM4_REMAP [12] 1ビット(rw) :TIM4 の再配置
0:再配置なし(TIM4_CH1/PB6、TIM4_CH2/PB7、TIM4_CH3/PB8、TIM4_CH4/PB9)
1:完全な再配置(TIM4_CH1/PD12、TIM4_CH2/PD13、TIM4_CH3/PD14、TIM4_CH4/PD15)
■ AFIO_MAPR_TIM3_REMAP [11:10] 2ビット(rw) :TIM3 の再配置
設定値
AFIO_MAPR_TIM3_REMAP_NONE 再配置なし(CH1/PA6、CH2/PA7、CH3/PB0、CH4/PB1)
AFIO_MAPR_TIM3_REMAP_PARTIAL 部分的な再配置(CH1/PB4、CH2/PB5、CH3/PB0、CH4/PB1)
AFIO_MAPR_TIM3_REMAP_FULL 完全な再配置(CH1/PC6、CH2/PC7、CH3/PC8、CH4/PC9)
■ AFIO_MAPR_TIM2_REMAP [9:8] 2ビット(rw) :TIM2 の再配置
設定値
AFIO_MAPR_TIM2_REMAP_NONE 再配置なし(CH1/ETR/PA0、CH2/PA1、CH3/PA2、CH4/PA3)
AFIO_MAPR_TIM2_REMAP_PA15_PB3_PA2_PA3 部分的な再配置(CH1/ETR/PA15、CH2/PB3、CH3/PA2、CH4/PA3)
AFIO_MAPR_TIM2_REMAP_PA0_PA1_PB10_PB11 部分的な再配置(CH1/ETR/PA0、CH2/PA1、CH3/PB10、CH4/PB11)
AFIO_MAPR_TIM2_REMAP_FULL 完全な再配置(CH1/ETR/PA15、CH2/PB3、CH3/PB10、CH4/PB11)
■ AFIO_MAPR_TIM1_REMAP [7:6] 2ビット(rw) :TIM1 の再配置
設定値
AFIO_MAPR_TIM1_REMAP_NONE 再配置なし(ETR/PA12、CH1/PA8、CH2/PA9、CH3/PA10、CH4/PA11、BKIN/PB12、CH1N/PB13、CH2N/PB14、CH3N/PB15)
AFIO_MAPR_TIM1_REMAP_PARTIAL 部分的な再配置(ETR/PA12、CH1/PA8、CH2/PA9、CH3/PA10、CH4/PA11、BKIN/PA6、CH1N/PA7、CH2N/PB0、CH3N/PB1)
AFIO_MAPR_TIM1_REMAP_FULL 完全な再配置(ETR/PE7、CH1/PE9、CH2/PE11、CH3/PE13、CH4/PE14、BKIN/PE15、CH1N/PE8、CH2N/PE10、CH3N/PE12)
■ AFIO_MAPR_USART3_REMAP [5:4] 2ビット(rw) :USART3 の再配置
設定値
AFIO_MAPR_USART3_REMAP_NONE 再配置なし(TX/PB10、RX/PB11、CK/PB12、CTS/PB13、RTS/PB14)
AFIO_MAPR_USART3_REMAP_PARTIAL 部分的な再配置(TX/PC10、RX/PC11、CK/PC12、CTS/PB13、RTS/PB14)
AFIO_MAPR_USART3_REMAP_FULL 完全な再配置(TX/PD8、RX/PD9、CK/PD10、CTS/PD11、RTS/PD12)
■ AFIO_MAPR_USART2_REMAP [3] 1ビット(rw) :USART2 の再配置
0:再配置なし(CTS/PA0、RTS/PA1、TX/PA2、RX/PA3、CK/PA4)
1:再配置(CTS/PD3、RTS/PD4、TX/PD5、RX/PD6、CK/PD7)
■ AFIO_MAPR_USART1_REMAP [2] 1ビット(rw) :USART1 の再配置
0:再配置なし(TX/PA9、RX/PA10)
1:再配置(TX/PB6、RX/PB7)
■ AFIO_MAPR_I2C1_REMAP [1] 1ビット(rw) :I2C1 の再配置
0:再配置なし(SCL/PB6、SDA/PB7)
1:再配置(SCL/PB8、SDA/PB9)
■ AFIO_MAPR_SPI1_REMAP [0] 1ビット(rw) :SPI1の再配置
0:再配置なし(NSS/PA4、SCK/PA5、MISO/PA6、MOSI/PA7)
1:再配置(NSS/PA15、SCK/PB3、MISO/PB4、MOSI/PB5)
外部割り込み設定レジスタ 1(AFIO_EXTICR1)
■ AFIO_EXTICR1_EXTI3 [15:12] 4ビット(rw) :EXTI3設定
設定値
AFIO_EXTICR1_EXTI3_PA PA3ピン
AFIO_EXTICR1_EXTI3_PB PB3ピン
AFIO_EXTICR1_EXTI3_PC PC3ピン
AFIO_EXTICR1_EXTI3_PD PD3ピン
AFIO_EXTICR1_EXTI3_PE PE3ピン
AFIO_EXTICR1_EXTI3_PF PF3ピン
AFIO_EXTICR1_EXTI3_PG PG3ピン
■ AFIO_EXTICR1_EXTI2 [11:8] 4ビット(rw) :EXTI2設定
設定値
AFIO_EXTICR1_EXTI2_PA PA2ピン
AFIO_EXTICR1_EXTI2_PB PB2ピン
AFIO_EXTICR1_EXTI2_PC PC2ピン
AFIO_EXTICR1_EXTI2_PD PD2ピン
AFIO_EXTICR1_EXTI2_PE PE2ピン
AFIO_EXTICR1_EXTI2_PF PF2ピン
AFIO_EXTICR1_EXTI2_PG PG2ピン
■ AFIO_EXTICR1_EXTI1 [7:4] 4ビット(rw) :EXTI1設定
設定値
AFIO_EXTICR1_EXTI1_PA PA1ピン
AFIO_EXTICR1_EXTI1_PB PB1ピン
AFIO_EXTICR1_EXTI1_PC PC1ピン
AFIO_EXTICR1_EXTI1_PD PD1ピン
AFIO_EXTICR1_EXTI1_PE PE1ピン
AFIO_EXTICR1_EXTI1_PF PF1ピン
AFIO_EXTICR1_EXTI1_PG PG1ピン
■ AFIO_EXTICR1_EXTI0 [3:0] 4ビット(rw) :EXTI0設定
設定値
AFIO_EXTICR1_EXTI0_PA PA0ピン
AFIO_EXTICR1_EXTI0_PB PB0ピン
AFIO_EXTICR1_EXTI0_PC PC0ピン
AFIO_EXTICR1_EXTI0_PD PD0ピン
AFIO_EXTICR1_EXTI0_PE PE0ピン
AFIO_EXTICR1_EXTI0_PF PF0ピン
AFIO_EXTICR1_EXTI0_PG PG0ピン
外部割り込み設定レジスタ 2(AFIO_EXTICR2)
■ AFIO_EXTICR1_EXTI7 [15:12] 4ビット(rw) :EXTI7設定
設定値
AFIO_EXTICR1_EXTI7_PA PA7ピン
AFIO_EXTICR1_EXTI7_PB PB7ピン
AFIO_EXTICR1_EXTI7_PC PC7ピン
AFIO_EXTICR1_EXTI7_PD PD7ピン
AFIO_EXTICR1_EXTI7_PE PE7ピン
AFIO_EXTICR1_EXTI7_PF PF7ピン
AFIO_EXTICR1_EXTI7_PG PG7ピン
■ AFIO_EXTICR1_EXTI6 [11:8] 4ビット(rw) :EXTI6設定
設定値
AFIO_EXTICR1_EXTI6_PA PA6ピン
AFIO_EXTICR1_EXTI6_PB PB6ピン
AFIO_EXTICR1_EXTI6_PC PC6ピン
AFIO_EXTICR1_EXTI6_PD PD6ピン
AFIO_EXTICR1_EXTI6_PE PE6ピン
AFIO_EXTICR1_EXTI6_PF PF6ピン
AFIO_EXTICR1_EXTI6_PG PG6ピン
■ AFIO_EXTICR1_EXTI5 [7:4] 4ビット(rw) :EXTI5設定
設定値
AFIO_EXTICR1_EXTI5_PA PA5ピン
AFIO_EXTICR1_EXTI5_PB PB5ピン
AFIO_EXTICR1_EXTI5_PC PC5ピン
AFIO_EXTICR1_EXTI5_PD PD5ピン
AFIO_EXTICR1_EXTI5_PE PE5ピン
AFIO_EXTICR1_EXTI5_PF PF5ピン
AFIO_EXTICR1_EXTI5_PG PG5ピン
■ AFIO_EXTICR1_EXTI4 [3:0] 4ビット(rw) :EXTI4設定
設定値
AFIO_EXTICR1_EXTI4_PA PA4ピン
AFIO_EXTICR1_EXTI4_PB PB4ピン
AFIO_EXTICR1_EXTI4_PC PC4ピン
AFIO_EXTICR1_EXTI4_PD PD4ピン
AFIO_EXTICR1_EXTI4_PE PE4ピン
AFIO_EXTICR1_EXTI4_PF PF4ピン
AFIO_EXTICR1_EXTI4_PG PG4ピン
AFの再配置・デバッグ入出力設定レジスタ 2(AFIO_MAPR2)
■ AFIO_MAPR2_FSMC_NADV [10] 1ビット(rw) :FSMC_NADV:NADV の接続/切断
0:NADV 信号は出力に接続されます(デフォルト)。
1:NADV 信号は接続されません。入出力ピンは別のペリフェラルで使用できます。
■ AFIO_MAPR2_TIM14_REMAP [9] 1ビット(rw) :TIM14_REMAP:TIM14 の再配置
0:再配置なし(PA7)
1:再配置(PF9)
■ AFIO_MAPR2_TIM13_REMAP [8] 1ビット(rw) :TIM13_REMAP:TIM13 の再配置
0:再配置なし(PA6)
1:再配置(PF8)
■ AFIO_MAPR2_TIM11_REMAP [7] 1ビット(rw) :TIM11_REMAP:TIM11 の再配置
0:再配置なし(PB9)
1:再配置(PF7)
■ AFIO_MAPR2_TIM10_REMAP [6] 1ビット(rw) :TIM10_REMAP:TIM10 の再配置
0:再配置なし(PB8)
1:再配置(PF6)
■ AFIO_MAPR2_TIM9_REMAP [5] 1ビット(rw) :TIM9_REMAP:TIM9 の再配
0:再配置なし(TIM9_CH1/PA2 および TIM9_CH2/PA3)
1:再配置(TIM9_CH1/PE5 および TIM9_CH2/PE6)
参考文献
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。