概要 anchor.png

Digitus STM32F3に搭載されたSTM32F373のペリフェラルを応用したライブラリ集です。
GCC Developer Liteにはほとんどの各マイコンボード用にGPIOやシリアル通信に関する簡単なライブラリが含まれていますが、それ以外のペリフェラル等を活用するとなるとゼロからプログラムしなくてはなりません。その場合、プログラムコードの大半がそれらの初期化ルーチンや制御ルーチンで埋め尽くされ、1つのソースコードの編集しか許容していないGCC Developer Liteでは大きな負担となります。
もちろんGCC Develoer Liteにこだわらなければ、その他の便利な開発環境を使用する事で、標準で提供されるペリフェラルライブラリが使えたり、複数ソースのコンパイルや編集が可能です。
とはいえ常時複数のソースプログラムを編集するのは大変ですし、最終的には改変を行うソースプログラムは集約されて行きますので、GCC Developer Liteとしてももう少しライブラリを拡充しようと言うことで用意しました。

なお、機能がかなり偏っていますが、

  • ソース上では抽象的に記述したいが、ペリフェラルを制御する上での解釈が面倒
  • コードサイズが肥大化しがちな処理ルーチン
  • 使われていないリソースを活用
  • Dynamixelの通信機能を活用

といった観点で選択しています。要望によっては拡充されたりる可能性もありますし、多勢に無勢なところで記述方法等が変わる事は十分ありますので、予めご了承ください。

Page Top

API anchor.png

機能別にAPIの詳細を解説します。主なコンテンツを以下に紹介します。

それ以外に処理系に依存しにくい体裁として、変数型の宣言の際は概ね以下を使用する事とします。

  • int8_t
  • uint8_t
  • int16_t
  • uint16_t
  • int32_t
  • uint32_t
Page Top

FreeRTOS anchor.png

FreeRTOSをCortex-M4Fコア用としてコンパイル及びライブラリ化し「TARGET/FREERTOS_CM4F」フォルダに収録しています。必要に応じて同梱の「FreeRTOSConfig.h」を編集してライブラリを再構築する事もできます。
FreeRTOS自体は自信のプログラムの状態にかかわらず自由にリンクして使う事ができますので、OSが必要になった段階で適用の可否を判断したとしても影響が過大になることは少ないでしょう。
詳細はFreeRTOSのサイトに委ねます。

Page Top

ディレイ anchor.png

正確な時間を元に時間待ちや経過時間を計測します。元となるクロックはDWTを使用しているため、各APIを定期的にコールする際は59秒以内(4294967295/72MHz)に行う必要があります。

Page Top
delay_us anchor.png
extern void delay_us (uint32_t *mydelaybuf, uint32_t us);
Page Top
delay_ms anchor.png
extern void delay_ms (uint32_t *mydelaybuf, uint32_t ms);
Page Top
gettick_ms anchor.png
extern uint32_t gettick_ms (uint32_t *mytickbuf);
Page Top
delay_csw anchor.png
extern void (*delay_csw) (void);
Page Top

CRCチェックサム anchor.png

X^16+X^15+X^2+1の多項式に限定したチェックサムを算出します。DynamixelプロトコルV2に使用されるチェックサムを目的としているため、それ以外のCRCを算出する用途には使えません。
なお、内蔵ペリフェラルもしくはソフトウェアによるCRCの算出が選択できます。

Page Top
ushpfunc anchor.png
typedef uint8_t (*ushpfunc) (uint8_t c);
Page Top
CRC_Init anchor.png
extern void CRC_Init (void);
Page Top
CRC_SetSeed anchor.png
extern void CRC_SetSeed (uint16_t *pCRC, uint16_t d);
Page Top
CRC_Write anchor.png
extern void CRC_Write (uint16_t *pCRC, uint8_t d);
Page Top
CRC_Writes anchor.png
extern void CRC_Writes (uint16_t *pCRC, uint8_t *src, uint16_t len);
Page Top
CRC_Writes2 anchor.png
extern void CRC_Writes2 (uint16_t *pCRC, uint8_t *dest, uint8_t *src, uint16_t len);
Page Top
CRC_Writes3 anchor.png
extern void CRC_Writes3 (uint16_t *pCRC, ushpfunc pf, uint8_t *src, uint16_t len);
Page Top
CRC_Get anchor.png
extern uint16_t CRC_Get (uint16_t *pCRC);

トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
最終更新: 2016-03-30 (水) 18:09:51 (JST) (2946d)