Tangwx

Tangwx

博客网站

02. STM32プロジェクトの作成

2 新しい STM32 プロジェクトの作成#

2 新しい STM32 プロジェクトの作成#

2.1 STM32F10X モデルの分類と略語#

STM32F103C8T6C8T6のフラッシュは 64K なので、MD の起動ファイルを選択します。

略語意味Flash容量モデル
LD_VL小容量製品超値シリーズ16~32KSTM32F100
MD_VL中容量製品超値シリーズ64~128KSTM32F100
HD_VL大容量製品超値シリーズ256~512KSTM32F100
LD小容量製品16~32KSTM32F101/102/103
MD中容量製品64~128KSTM32F101/102/103
HD大容量製品256~512KSTM32F101/102/103
XL加大容量製品大于 512KSTM32F101/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 プロジェクトのアーキテクチャ図#

image-20220809173713894

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

image-20220821155147410

Startフォルダ:#

.s起動ファイルは、Keil ソフトウェアで 1 つしか追加できません。今回はstartup_stm32f10x_md.s起動ファイルを選択します。

stm32f10x.hのペリフェラルレジスタの記述ファイルで、51 マイクロコントローラのREGX52.hと同様の役割を果たし、STM32 のどのレジスタと対応するアドレスがあるかを記述します。

system_stm32f10x.csystem_stm32f10x.hファイルはクロックの設定に使用されます。STM32のメインクロックは、system ファイル内の関数によって設定されます。

core_cm3.ccore_cm3.hファイルは、コアのレジスタの記述といくつかのコアの設定関数を持っていますので、.cファイルが追加されています。

次に、プロジェクトオプションで Start フォルダのヘッダーファイルのパスを追加します。そうしないと、ソフトウェアは.hファイルを見つけることができません。

Libraryフォルダ:#

incsrcの 2 つのフォルダには、ST 社が提供する.h.cのライブラリファイルが含まれています。

Systemフォルダ:#

System フォルダには、システムのリソースが格納されています。たとえば、delay.c delay.hなどです。

Userフォルダ:#

main.cファイル

stm32f10x_conf.hファイルは、ライブラリ関数のヘッダーファイルの関係を設定するためのもので、パラメータのチェック用の関数定義も含まれています。これはすべてのライブラリ関数で必要です。

stm32f10x_it.cstm32f10x_it.hファイルは、割り込み関数を格納するためのものです。

2.5 STLinkを使用してstm32マイクロコントローラを接続する#

接続方法:

image

ST-LINK V2STM32
3.3V3V3
SWDIOSWIO
SWCLKSWCLK
GNDGND

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)
	{
		
	}
}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。