同じArduino IDEが使えるにしても、STM32F103C8T6とArduinoは、別物です。
Web上には、STM32F103C8T6は、Arduinoの3倍速いという記載をみつけましたが、実際はどうなのか、比較検証してみました。
まず、それぞれのスペックを比較します。
STM32F103T8C6 Arduino UNO
クロック 72MHz 16MHz
Flash Memory 64MB 32MB
SRAM 20MB 2KB
EEPROM なし 1KB
クロック周波数を比較するとSTM32は、Arduinoの4.5倍ですから、単純に考えて、STM32は、Arduinoの4.5倍の速度が期待できます。
実際に、簡単なスケッチで比較してみます。
STM32のスケッチです。
void setup(){
pinMode(PB12,OUTPUT);
}
void loop(){
digitalWrite(PB12,HIGH);
digitalWrite(PB12,LOW);
}
PB12にHIGHとLOWを交互に出力します。スケッチをコンパイルすると8144バイトでした。
pico scopeで観察すると
周期は、約1.4usです。
周波数を自作の周波数カウンタで、測定してみると、698638Hz=698.638KHzです。ただし、10Hz以下はあやしいです。
では、次にArduino UNOで、同じスケッチを実行してみます。ただし、PB12は、単に12と書き換えます。スケッチは、734バイトでした。
デジタルポート12の出力波形です。
周期は、約6.9usで、周波数は、144483Hz=144.483KHzでした。(カウンタの表示が見ずらくてすみません)
周波数を比較すると、STM32は、Arduinoの4.84倍です。
STM32のスケッチサイズが、Arduinoの10倍以上なのですが、速度は出るんですね。