So-net無料ブログ作成

STM32FをArduino iDEで開発的なメモ [STM32F]

1.Arduino IDEを起動して、ツール→ボードマネージャーでボードマネージャを起動し、フィルターにSAMを入力してCortex-M3に関する環境を入手する。※フィルターにSTMを入れるとSTM32F4が見つかる。
stm32fArduinoIde_001.png

2.GitHubからSTM32F用のArduinoライブラリを入手する。
https://github.com/rogerclarkmelbourne/Arduino_STM32
展開後、展開したフォルダーごとhardwareフォルダー以下に移動。

3.適当なプロジェクトを作成する。書き込みはSTLinkを選択する。
※DFU(USB書き込み)とかシリアル書き込みはできるのだけど、都度BOOTのスイッチを切り替える必要が有るので、もうSTLinkでイイじゃん!って感じ。

4.以上!
※gccのツールチェインバージョンが4.8.3-2014q1と古いのが気になる、、、

5.ライブラリのドキュメントの参照先
http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/0.0.12/language-index.html

こことかも
https://scrapbox.io/ArduinoSTM32/Arduino_STM32_リファレンス_日本語版

※STM32FのUSBを有効にするためには、USBのDPのプルアップを制御しているDISK(信号名)を基板に合わせる必要が有る。例えばMB-STM32F103ならPC13がそれになる(標準はPC12)。この基板で使用しているのはSTM32F103VETなので、以下のboard.hの111行目を編集して適応化させる。
\hardware\Arduino_STM32-master\STM32F1\variants\generic_stm32f103v\board\board.h
論理の変更は以下のファイルの390行目だと思われる。
\hardware\Arduino_STM32-master\STM32F1\cores\maple\libmaple\usb\stm32f1\usb_cdcacm.c

gpio_write_bit(disc_dev, disc_bit, 0); 最後の引数を0から1かなぁ、、、と言うのは元になっているmaple-r5と言う基板が以下の様になっているからである。
https://github.com/leaflabs/maple/blob/master/maple-r5/maple-r5-schematic.pdf
信号名DISCをLOWにするとDPにプルアップが行われる。

GitHubに置かれたプロジェクト
https://github.com/chobichan/stm32f3MultiTask_001


※PIN番号とGPIOの対応
上記のboard.hに以下の様に定義されている。
/* Pin aliases: these give the GPIO port/bit for each pin as an
 * enum. These are optional, but recommended. They make it easier to
 * write code using low-level GPIO functionality. */
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,
PC0,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10,PC11,PC12,PC13,PC14,PC15,
PD0,PD1,PD2,PD3,PD4,PD5,PD6,PD7,PD8,PD9,PD10,PD11,PD12,PD13,PD14,PD15,
PE0,PE1,PE2,PE3,PE4,PE5,PE6,PE7,PE8,PE9,PE10,PE11,PE12,PE13,PE14,PE15,
};


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。