CMSISファイルと周辺機器ドライバファイルに書かれているコードの種類。どうすればそれらを区別できますか? どんな例でもより役に立ちます。ありがとうございました。
2 に答える
「CMSIS」は、Cortex Microcontroller Software Interface Standardです。これは ARM 標準であるため、コードは Cortex 実装間で多かれ少なかれ移植可能である必要があります。
2 つの異なるベンダーがタイマーや UART ブロックなどをどのように実装するかについての標準がないため、一般に、周辺機器ライブラリはよりベンダー固有です。
少なくとも、これは STM32 ファミリの ARM を (ほとんど) 扱ってきた私の基本的な理解です。ただし、その CMSIS ページで、CMSIS の範囲が実際にはより広いことに気付きました。
CMSIS-Driver: ミドルウェア用の汎用ペリフェラル ドライバー インターフェイスを定義し、サポートされているデバイス間で再利用できるようにします。API は RTOS に依存せず、マイクロコントローラ周辺機器を、通信スタック、ファイル システム、またはグラフィック ユーザー インターフェイスなどを実装するミドルウェアに接続します。
ベンダー固有のコードに関連付けられていることを実行するように聞こえますが、おそらくすべてのベンダーが実際にCMSIS-Driver をまだ使用しているわけではありません。
更新: 私が使用した STM32:s では、GPIO は ST の周辺機器ライブラリのみを使用して管理されます。
とても簡単です。
RCC_AHB1PeriphClockCmd()
GPIO ペリフェラルのクロックを有効にするために使用します。たくさんの時計があるので、それを正しく行うようにしてください。すべての GPIO は AHB1にあると思います。- タイプの変数を
GPIO_InitTypeDef
呼び出しGPIO_StructInit()
て初期化し、デフォルトを取得します。 - で本当に
GPIO_InitTypeDef
必要な設定を行い、必要に応じてデフォルトをオーバーライドします。 - 適切なポートを呼び出し、実際の設定
GPIO_Init()
でそれを渡します。GPIO_InitTypeDef
これにより、周辺機器のレジスタが突かれます。 - などの呼び出しを使用して、実際
GPIO_SetBits()
にGPIO_ReadInputDataBit()
GPIO ピンを使用します。