ボード固有の定数
ボード固有の値はいくつかあります。定数または変数は、どのMape(Arduino STM32)ボードを使用しているかによって異なります。 各ボードの正確な値は、ボードのハードウェアマニュアルに記載されています。 このページには、ボード固有の値がリストされ、文書化されています。 あなた自身のプログラムでこれらを適切に使うべきです。 これにより、異なるボードを持つ他の人とコードを簡単に共有できるようになります。 いくつかの使用例を以下に示します。
定数(define文定義)
CYCLES_PER_MICROSECOND :ボード上の1マイクロ秒当たりのCPUサイクル数
CLOCK_SPEED_MHZ :ボードのクロック速度(MHz)。これはCYCLES_PER_MICROSECONDと同じです。
CLOCK_SPEED_HZ :ボードのクロック速度(Hz)。これはCLOCK_SPEED_MHZ×1,000,000と同じです。
SYSTICK_RELOAD_VAL :SysTickタイマのカウンタをリロードするときに使用される値 1. BOARD_BUTTON_PIN :内蔵ボタンに接続されたピン(ボードのシルクスクリーンの "BUT"とラベルが付けられています)。
BOARD_LED_PIN :ピンが内蔵LEDに接続されています。
LED_BUILTIN :ピンが内蔵LEDに接続されています(Blue Pillを想定したPC13に固定)。
BOARD_NR_GPIO_PINS :ヘッダーに分割されたGPIOピンの総数。 これらのうちのいくつかは、内蔵のLEDやボタンなどの外部ハードウェアにすでに接続されている場合があります。 ピンが使用中かどうかを調べるには、boardUsesPin()(およびboardUsedPins())を参照してください。 BOARD_NR_PWM_PINS :PWMに使用できるGPIOピンの総数。 PWMを行うことができる実際のピンはboardPWMPins配列にあります。
BOARD_NR_ADC_PINS :アナログ/デジタル変換に使用できるGPIOピンの総数。 ADC変換を行うことができる実際のピンはboardADCPins配列にあります。
BOARD_NR_USED_PINS :ボード上の外部ハードウェア(内蔵LEDなど)にすでに接続されているGPIOピンの総数。 すでに使用されている実際のピンはboardUsedPins配列にあります。 ピンがすでに使用されているかどうかを調べるには、boardUsesPin()関数を使用します。 USART(シリアルポート)関連定数:
BOARD_USART1_TX_PIN、BOARD_USART2_TX_PIN、BOARD_USART3_TX_PIN:3 つのUSARTのTXピン。
OARD_USART1_RX_PIN、BOARD_USART2_RX_PIN、BOARD_USART3_RX_PIN:3つのUSARTのRXピン。
BOARD_UART4_TX_PIN、BOARD_UART5_TX_PIN:UART4、5のTXピン(Maple Native等の上位ボード)。
BOARD_UART4_RX_PIN、BOARD_UART5_RX_PIN:UART4、5のRXピン(Maple Native等の上位ボード)。
BOARD_NR_USARTS :ボード上のシリアルポートの数。 UART4、5が含まれています(使用可能な場合)。
SPI関連の定数:
BOARD_SPI1_NSS_PIN、BOARD_SPI1_MOSI_PIN、BOARD_SPI1_MISO_PIN、BOARD_SPI1_SCK_PIN:それぞれSPI1ペリフェラルのNSS、MOSI、MISO、およびSCKピン。
BOARD_SPI2_NSS_PIN、BOARD_SPI2_MOSI_PIN、BOARD_SPI2_MISO_PIN、BOARD_SPI2_SCK_PIN:それぞれSPI2ペリフェラルのNSS、MOSI、MISO、およびSCKピン。
BOARD_SPI3_NSS_PIN、BOARD_SPI3_MOSI_PIN、BOARD_SPI3_MISO_PIN、BOARD_SPI3_SCK_PIN:それぞれSPI3ペリフェラルのNSS、MOSI、MISO、およびSCKピン(Maple NativeおよびMaple RET6エディションのような上位デバイスでのみ使用可能)。
BOARD_NR_SPI:ボード上のSPIペリフェラルの数。
SS :BOARD_SPI1_NSS_PINが定義されています。
SS1 :BOARD_SPI2_NSS_PINが定義されています。
MOSI :BOARD_SPI1_MOSI_PINが定義されています。
MISO :BOARD_SPI1_MISO_PINが定義されています。
SCK :BOARD_SPI1_SCK_PINが定義されています。
デバッグ(JTAG、SW-デバッグ)関連の定数:BOARD_JTMS_SWDIO_PIN、BOARD_JTCK_SWCLK_PIN、BOARD_JTDI_PIN、BOARD_JTDO_PIN、およびBOARD_NJTRST_PIN。
これらの定数は、JTAGおよびシリアルワイヤデバッグペリフェラルで使用されるGPIOのピン番号です。 Maple Miniを除いて、これらのピンは通常、デフォルトで特別な目的のために予約されています(つまり、boardUsedPinsに入っています)。 ただし、disableDebugPorts()関数を呼び出すと、通常のGPIOとして使用できます。(MapleとMaple RET6 Editionではこれを注意してください、BOARD_NJTRST_PINへの書き込みはあなたのボードをリセットさせるかもしれません!) ピン配列
特定のピンに関する特定の重要な情報を見つけるために使用できるピン番号の配列があります。
boardPWMPins:pwmWrite()を使用して、PWM出力が可能な各ピンのピン番号。 これらのピンの総数は BOARD_NR_PWM_PINSです。 boardADCPins:analogRead()を使用してADC変換が可能な各ピンのピン番号。 これらのピンの総数はBOARD_NR_ADC_PINSです。 boardUsedPins:ボードによって特別に使用されるデフォルトの各ピンのピン番号。 これらのピンの総数はBOARD_NR_USED_PINSです。 ピンが特別な用途に使用されているかどうかを調べるには、boardUsesPin()を使用します。 例
BOARD_LED_PIN はMapleでは、内蔵LEDが13ピンに接続されています。ただし、Maple Miniでは33ピンに接続されています。この例を使用して両方のボードで動作する "blinky"プログラムを書くことができます。
(注意)Arduino STM32ではBOARD_LED_PINは未定義であり、利用出来ません。代わりにLED_BUILTINを利用して下さい。ただし、LED_BUILTINはBlue Pillボードでの利用を前提としており、PC13に固定されています。他のボードを利用する場合は注意して下さい。
ピン番号
pinMode()等で指定するピン番号は、ピン番号を整数値で指定するほかに、STM32のGPIOピン名称を利用することが出来ます。 PA0、PA1、... PAn
PB0、PB2、... PBn
PC0、PC2、... PCn
・・・
これらは列挙型で定義されており、それぞれに対応するピン番号(整数値)が設定されています。
BOARD_BUTTON_PIN:Mapleでは、組み込みボタンは38ピンに接続されています。しかし、Maple Miniでは32ピンに接続されています。この例では、ボタンを押すたびにメッセージを印刷するプログラムを書く方法を示します。 すべてのLeafLabsボードで動作します。
(注意)Arduino STM32ではBOARD_BUTTON_PINは未定義であり、利用出来ない。
参考
STM32F1/variants/generic_stm32f103c/board/board.h に定義されている定数
code:board.h
#define CYCLES_PER_MICROSECOND (F_CPU / 1000000U) #define SYSTICK_RELOAD_VAL (F_CPU/1000) - 1 /* takes a cycle to reload */ // 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
};
関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。