Arduino STM32 リファレンス 日本語版
原文
本ドキュメントは、 「Maple LeafLabs, LLC. Last updated on Jan 15, 2014」をたま吉が翻訳・加筆修正した非公式ドキュメントです。誤訳・記載ミスが多々ありますが、ご了承下さい。
また、リファレンス内容はSTM32F1系に特化しています。STM32F4系の追加機能及びSTM32F1との差異に関する情報は抜けている場合があります。
※NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。
構造
setup() スケッチの実行開始時に呼び出されます。
loop() スケッチの実行時、繰り返し呼び出されます。
制御文
if
for
switch
while
do
break
continue
return
goto
基本的な文法
; (セミコロン)
{ } (中括弧)
コメント // (シングルラインコメント)、 /* */ (マルチラインコメント)
#define (定数の定義)
#include (ヘッダーファイルの読み込み)
演算子
代入演算子 =
算術演算子 + (加算)、 - (減算)、 * (掛け算)、 / (割り算)
剰余演算子 %(剰余)
比較演算子 == (等しい)、!= (等しくない)、 < (小さい)、 > (大きい)、 <= (以下)、  >= (以上)
ブール演算子 && (理AND演算子)  || (論理OR演算子)  ! (論理NOT演算子)
ポインター演算子  * (間接演算子)、 & (アドレス演算子)
ビット演算子 & (ビット単位のAND)、  | (ビット単位のOR)、 ^ (ビット単位のXOR)、 ~ (ビット単位のNOT)
ビットシフト演算子  << (左シフト)、  >> (右シフト)
インクリメントおよびデクリメント演算子  ++ (インクリメント)、  -- (ディクリメント)
複合演算子
+= (複合足し算)、 -= (複合引き算)、  *= (複合掛け算)、  /= (複合割り算)
%= (複合剰余)、  &= (複合ビット単位AND)、  |= (複合ビット単位OR)
^= (複合ビット単位XOR)、  <<= (複合左シフト)、  >>= (複合右シフト)
キーワード
C++キーワード
定数
true | false、 HIGH | LOW、 INPUT | OUTPUT、 LSBFIRST | MSBFIRST (wirish_constants.h)
数値定数, 浮動小数点定数
ボード固有の定数
その他便利な定数 (PI、HALF_PI、TWO_PI…)
データ型
void
ブール型 bool (1 バイト)
char (1 バイト)、unsigned char (1 バイト)、byte (1 バイト)
int (4 バイト)、unsigned int (4 バイト)、long (4 バイト intと同じ)、unsigned long (4 バイト unsigned intと同じ)
long long (8 バイト)、unsigned long long (8 バイト)、int64(long longと同じ)、uint64(unsigned long longと同じ)
float (4 バイト)
double (8 バイト)
文字列
配列
enum
組み込み型 (uint8、int8、uint16、int16、uint8_t、int8_t 等のデータ型について)
文字列型 (Stringクラス)
変数の応用
変数, スコープ
static
volatile、__IO
const
__FLASH__、__attr_flash (古い記述方法です。代わりにconstを使って下さい)
API・コアライブラリ
型変換
char()、byte()、int()、long()、float()、double() 指定した型へのキャスト(型変換)
makeWord()、word() (ヘッダーファイル wirish_math.h) ワード型(符号無し16ビット)への変換
ユーティリティ
sizeof()
ASSERT()
デジタル入出力関数 (ヘッダーファイル io.h)
pinMode() GPIOピンの動作設定
digitalWrite() デジタル出力
digitalRead() デジタル入力
アナログ入出力関数 (ヘッダーファイル io.h)
analogRead() アナログ入力
analogWrite() PWM出力
pwmWrite() PWM出力(analogWrite()と同等)
その他の入出力関数
shiftOut() バイトデータのシフトアウト (ヘッダーファイル io.h)
shiftIn() バイトデータのシフトイン(ヘッダーファイル io.h)
pulseIn() 入力パスル幅の測定(ヘッダーファイル wiring_pulse.h)
tone() 単音出力
noTone() 単音出力停止
時間に関する関数 (ヘッダーファイル wirish_time.h)
millis() システム稼働からの経過時間(ミリ秒)の取得
micros() システム稼働からの経過時間(マイクロ秒)の取得
delay() 時間待ち(ミリ秒単位)
delayMicroseconds() 時間待ち(マイクロ秒単位)
数学的な関数 (ヘッダーファイル wirish_math.h)
min()、 max()
abs()
constrain()
map()
pow()
sqrt()
sq()
round()
radians()、degrees()
三角関数 (ヘッダーファイル wirish_math.h)
sin() 、 cos() 、 tan()
乱数に関する関数 (ヘッダーファイル wirish_math.h)
randomSeed()
random()
数値文字列変換 (ヘッダーファイル itoa.h)
itoa()、 ltoa() 符号付き数値を指定した基底の文字列に変換
utoa()、ultoa() 符号無し数値を指定した基底の文字列に変換
ビットとバイトの操作 (ヘッダーファイル wirish.h)
lowByte()、 highByte() バイトデータ抽出
bitRead()、 bitWrite() ビットデータ操作
bitSet()、 bitClear()、 bit() ビットデータ操作
_BV() 指定したビットセットでの整数値
文字ユーティリティ関数 (ヘッダーファイル WCharacter.h)
isControl()、 isPrintable()、 isGraph()、 isPunct() 制御文字、表示可能文字等のチェック
isWhitespace()、 isSpace() 空白文字のチェック
isDigit()、 isHexadecimalDigit()   数字(0〜9)、16進数文字のチェック
isAlphaNumeric()、 isAlpha()、 isAscii() 英数字、英字、アスキーコードのチェック
isLowerCase()、 isUpperCase() 大文字、小文字のチェック
toAscii()、 toLowerCase()、 toUpperCase() 大文字、小文字変換
システムクロック・時間変換 (ヘッダーファイル wirish.h)
clockCyclesPerMicrosecond() 1マイクロ秒当たりのクロックサイクル数の取得
clockCyclesToMicroseconds() 指定したクロック数期間のをマイクロ秒単位で取得
microsecondsToClockCycles() 指定した時間(マイクロ秒単位)のクロック数を取得
デバッグ用ポートの利用設定
disableDebugPorts() (ヘッダファイル wirish_debug.h) JTAGおよびSWデバッグポートを無効にする
enableDebugPorts() (ヘッダファイル wirish_debug.h) JTAGおよびSWデバッグポートを有効にする
afio_cfg_debug_ports() (ヘッダファイル series/gpio.h) TAGおよびSWデバッグポートの有効/無効設定
外部割り込み (レファンスマニュアル => 外部割込み)
attachInterrupt() 外部割込みハンドラの登録
detachInterrupt() 外部割込みハンドラの登録解消
タイマー・タイマー割り込み・高度なPWM制御
HardwareTimer タイマライブラリ
割り込みの有効・無効設定
interrupts() 割り込み有効設定
noInterrupts() 割り込み無効設定
GPIOポート利用支援 (variant.hに定義)
digitalPinToPort() ピン番号に対応するGPIOポート デバイスを取得
digitalPinToBitMask() GPIOポートのピンのGPIOビット番号(0~15)を取得
portOutputRegister() GPIOポート出力データレジスタ(GPIOx_ODR)を取得
portInputRegister() GPIOポート入力データレジスタ(GPIOx_IDR)を取得
portSetRegister() GPIO ポートビットセット/リセットレジスタ(GPIOx_BSRR)を取得
portClearRegister() GPIO ポートビットリセットレジスタ(GPIOx_BRR)を取得
portConfigRegister() GPIO ポート設定レジスタ(下位)(GPIOx_CRL)を取得
文字入出力ユーティリティ
Print print()とprintln()を提供する基本クラス
Stream 文字ベースのストリームの基本クラス
Printable インスタンスの内容をprint()とprintln()で出力するシリアライズインタフェースクラス
シリアル通信
Arduino STM32では、USBポートを利用した仮想シリアルポート、シリアル端子を利用したシリアルポートが用意されています。利用するボードにより異なりますが、シリアル端子を利用したシリアルポートは3ポート以上用意されています。
USBSerial クラス(usb_serial.h) 実装済オブジェクト:Serail(*1)
HardwareSerial クラス(HardwareSerial.h) 実装済オブジェクト:Serial1,Serial2,Serial3, ... SerialN
(注意) Serialオブジェクトはスケッチ書き込み手段がシリアル端子を利用した場合、HardwareSerialクラスのインスタンスとなります。USBポートを利用したシリアル通信を行いたい場合は、明示的にUSBSerial クラスからインスタンスを作成して利用する必要があります。
(補足)ボート定義情報 ./Arduino_STM32/STM32F1/boards.txt で-DSERIAL_USBの指定がある書き込み方法ではSerialオブジェクトがUSBSerial クラスのインスタンス、それ以外はHardwareSerial クラスのインスタンスとなります。
標準Cライブラリ
Arduino STM32では、組み込みアプリケーションで使用するための C標準ライブラリnewlibが利用できます。
newlibから呼ばれる スタブ関数(低レベル入出力関数)はボード別にsyscalls.cに定義されています。メモリ獲得関数の除き、その大半は実装の無い空関数であり、標準入出力の利用はサポートされていません。
またnewlibは、ArduinoのAVR-GCCのC標準ライブラリとは実装が異なるため、動作及び仕様が異なる可能性があります。
Arduino STM32 標準ライブラリ
Arduino STM32に含まれる標準ライブラリ(コア以外のライブラリ)です。
EEPROM 仮想EEPROMクラスライブラリ
flash_stm32 内蔵フラッシメモリ利用ライブラリ
RTClock 内蔵RTC利用ライブラリ
Wire I2C通信ライブラリ(スレーブ、エミュレーション)
WireSlave I2C通信ライブラリ(スレーブ・マスタ)
SPI SPI通信ライブラリ
Adafruit_GFX_AS Adafruit GFX グラフィック コアライブラリ
Adafruit_ILI9341_STM Adafruit ILI9341 display ライブラリ(STM32最適化版)
STM32ADC 高機能アナログ - デジタル変換(ADC)ライブラリ
WS2812B WS2812Bライブラリ(NeoPixel制御ライブラリ)(まともに動作せず)
Serasidis_XPT2046_touch XPT2046タッチスクリーンライブラリ
Adafruit_ILI9341 Adafruit ILI9341 display ライブラリ
Adafruit_SSD1306 Adafruit SSD1306搭載OLEDディスプレイ ライブラリ
LiquidCrystal LiquidCrystalライブラリ(日立HD44780相当液晶ディスプレイ制御ライブラリ)
OLED_I2C I2C接続 SSD1306搭載OLEDディスプレイ ライブラリ(動作せず)
SDIO
Ethernet_STM
FreeRTOS、 FreeRTOS821、 FreeRTOS900
MapleCoOS、 MapleCoOS116
Lcd7920_STM
OneWireSTM
Serasidis_EtherCard_STM
Serasidis_VS1003B_STM
Servo
Touch-Screen-Library_STM
USBComposite
stm_fft
動作確認済Arduinoライブラリ
SDライブラリ (こちらを参照下さい:Arduino SD Library、武蔵野電波 Arduino 日本語リファレンス)
SdFat
Adafruit_GFX
libmaple下位レイアライブラリ
libmaple下位レイアライブラリは、STM32のデバイスを利用するたのAPI、レジスタマップで構成されています。
APIの利用のほか、直接レジスタを操作することも可能です。
Backup register (BKP) suport (bkp.h) libmaple/bkp.h バックアップメモリの利用
Bit-banding support(bitband.h) libmaple/bitband.h ビットバンディングのサポート
System timer (SysTick) support (systick.h) libmaple/systick.h システムタイマのサポート
GPIO port and AFIO support(gpio.h) libmaple/gpio.h GPIO・AFIOのサポート
Nested Vector Interrupt Controller (NVIC) support(nvic.h) ネスト型ベクタ割り込みコントローラ(NVIC)のサポート
External interrupt support(exti.h) libmaple/exti.h 外部割り込みのサポート
Independent Watchdog (IWDG) support(iwdg.h) 独立したウォッチドッグ(IWDG)のサポート
Power control (PWR) support(pwr.h) 電源制御のサポート
Reset and Clock Control (RCC) support(rcc.h) リセットとクロック制御(RCC)をサポート
Flash support(flash.h) フラッシュメモリのサポート
Timer support(timer.h) タイマーサポート
USART support(usart.h) シリアルポートのサポート
Inter-Integrated Circuit (I2C) peripheral support(i2c.h) I2Cのサポート
Serial Peripheral Interface (SPI) support(spi.h) SPIのサポート
Direct Memory Access (DMA) support(dma.h) DMAのサポート
Analog to Digital Conversion (ADC) support(adc.h) アナログ - デジタル変換(ADC)のサポート
Flexible Static Memory Controller (FSMC) support(fsmc.h) FSMCのサポート
Digital to Analog Conversion (DAC) support(dac.h) デジタル - アナログ変換(DAC)のサポート
System Control Block (SCB) support(scb.h) システム制御ブロック(SCB)サポート
Simple busy-loop delaying(delay.h) マイクロ秒単位の遅延のサポート
Miscellaneous utility macros and procedures(util.h)
Simple circular byte buffer(ring_buffer.h)
公開ライブラリ・スケッチ
Arduino STM32 TVoutライブラリ
Arduino STM32用 NTSCビデオ出力ラブラリ
Arduino STM32用 PS/2 キーボードライブラリ
PS2Keyboard 2.4 Arduino STM32対応バージョン
Arduino STM32用 内部フラッシュメモリ書き込みライブラリ
SDライブラリ修正版(STM32対応、MMC対応、半角カタカナ対応)
Arduino STM32 Xbox Chatpad ライブラリ (KeiTakagi/XboxChatpad)
Helper library for using Stop & Standby modes with STM32duino (chacal/stm32sleep)
Minimalistic terminal based on STM32 and ILI9341 2.2" LCD (cbm80amiga/STM32_TFT22_terminal_RRE)
STM32F103 based minimalist oscilloscope (pingumacpenguin/STM32-O-Scope)
TOYOSHIKI Tiny BASIC for Arduino STM32 (V0.5 V0.85β)
/icons/hr.icon
License and Attribution: Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.
Copyright 2010, 2011, LeafLabs, LLC. Last updated on Jan 15, 2014
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。
本ドキュメントに関する問い合わせ先: たま吉 mail:tamacat2014@gmail.com