2 新しい STM32 プロジェクトの作成#
2 新しい STM32 プロジェクトの作成#
2.1 STM32F10X モデルの分類と略語#
STM32F103C8T6 : C8T6のフラッシュは 64K ですので、MD の起動ファイルを選択します。
| 略語 | 意味 | Flash容量 | モデル |
|---|---|---|---|
| LD_VL | 小容量製品超値シリーズ | 16~32K | STM32F100 |
| MD_VL | 中容量製品超値シリーズ | 64~128K | STM32F100 |
| HD_VL | 大容量製品超値シリーズ | 256~512K | STM32F100 |
| LD | 小容量製品 | 16~32K | STM32F101/102/103 |
| MD | 中容量製品 | 64~128K | STM32F101/102/103 |
| HD | 大容量製品 | 256~512K | STM32F101/102/103 |
| XL | 加大容量製品 | 大于 512K | STM32F101/102/103 |
| CL | 互联型製品 | - | STM32F105/107 |
2.2 新しいプロジェクトの作成手順#
プロジェクトフォルダを作成し、Keil で新しいプロジェクトを作成し、モデルを選択します。
プロジェクトフォルダ内に Start、Library、User などのフォルダを作成し、ファームウェアライブラリのファイルをプロジェクトフォルダにコピーします。
プロジェクト内には、Start、Library、User などと同じ名前のグループを作成し、フォルダ内のファイルをプロジェクトグループに追加します。
プロジェクトオプション、C/C++、Include Paths で、すべてのヘッダーファイルが含まれているフォルダを宣言します。
プロジェクトオプション、C/C++、Define で、USE_STDPERIPH_DRIVER を定義します。他のプロジェクトでは、STM32F10x_MDという文字列もここで宣言されていますが、Keil5は新しいプロジェクトを作成した後に自動的にこれを宣言してくれるため、重複して宣言する必要はありません。
プロジェクトオプション、Debug、ドロップダウンリストから対応するデバッガを選択し、Settings、Flash Download で Reset and Run にチェックを入れます。
2.3 プロジェクトアーキテクチャ図#

2.4 keil 5 新しいプロジェクトの構造図#

Startフォルダ:#
.s起動ファイルは、Keil ソフトウェアで 1 つしか追加できません。今回はstartup_stm32f10x_md.s起動ファイルを選択します。
stm32f10x.h: STM32 のペリフェラルレジスタの記述ファイルで、51 マイクロコントローラのREGX52.hと同様の役割を果たし、STM32 のどのレジスタと対応するアドレスがあるかを記述します。
system_stm32f10x.cとsystem_stm32f10x.hファイルはクロックの設定に使用されます。STM32のメインクロック72MHzは、system ファイル内の関数によって設定されます。
core_cm3.cとcore_cm3.hファイルは、コアのレジスタの記述といくつかのコアの設定関数を持っていますので、.cファイルが追加されています。
次に、プロジェクトオプションで Start フォルダのヘッダーファイルのパスを追加します。そうしないと、ソフトウェアは.hファイルを見つけることができません。
Libraryフォルダ:#
incとsrcの 2 つのフォルダには、ST 社が提供する.hと.cのライブラリファイルが含まれています。
Systemフォルダ:#
System フォルダには、システムのリソースが格納されています。例えば、delay.c delay.hなどです。
Userフォルダ:#
main.cファイル
stm32f10x_conf.hファイルは、ライブラリ関数のヘッダーファイルの関係を設定するためのもので、パラメータのチェックに使用される関数の定義も含まれています。これはすべてのライブラリ関数に必要です。
stm32f10x_it.cとstm32f10x_it.hファイルは、割り込み関数を格納するためのものです。
2.5 STLinkを使用してstm32マイクロコントローラを接続する#
接続方法:

| ST-LINK V2 | STM32 |
|---|---|
| 3.3V | 3V3 |
| SWDIO | SWIO |
| SWCLK | SWCLK |
| GND | GND |
main.c
#include "stm32f10x.h" // Device header
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //Cポートのクロックを有効にする
//構造体を定義する
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //汎用プッシュプル出力
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // 13番ピン
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHzの速度
//ポートモードを設定する
GPIO_Init(GPIOC, &GPIO_InitStructure);
//ポートの高低レベルを設定する
//GPIO_SetBits(GPIOC, GPIO_Pin_13);//高レベル
GPIO_ResetBits(GPIOC, GPIO_Pin_13);//低レベル
while(1)
{
}
}