Freshman/Program/HAL/PrepareSW4STM32

提供: WMMC Wiki
移動先: 案内検索

準備②(SystemWorkbench for STM32 編)

まずは SystemWorkbench for STM32 を起動します。

Freshman-Program-Prepare-SW4STM32-Icon.png


ワークスペースの設定

Freshman-Program-Prepare-SW4STM32-ScreenShot-1.png

開発環境の導入 で説明した通りです。

起動時に毎回ワークスペースの場所を尋ねてくるのがうざったければ『Use this as the default ...』にチェックを入れましょう。


CubeMX プロジェクトをインポートする

CubeMX で生成したプロジェクトを SystemWorkbench for STM32 にインポートします。

まずは,メニューの『File』の『Open Projects from Filesystem...』を選択します。

Freshman-Program-Prepare-SW4STM32-ScreenShot-2.png


Wiki に書かれた指示通りに CubeMX で『Project Location』に SystemWorkbench for STM32 のワークスペースを指定していれば,ワークスペース内にプロジェクト名と同名のフォルダが存在していると思います。Wiki では例として「Practice」という名前のプロジェクトを CubeMX で作成したので『C:\ユーザー名\workspace\Practice』というフォルダが生成されています。

まずは『Directory』と書かれた箇所をクリックして,プロジェクト名と同名のフォルダを選択して『OK』を押します。

正しくフォルダが選択できていれば,『Folder』と書かれた下のところにプロジェクト名が表示され,その横の『Import as』の下に『eclipse project』と表示されます。大丈夫そうなら『Finish』を押します。駄目なら手順が間違っているのでやり直して下さい。

Freshman-Program-Prepare-SW4STM32-ScreenShot-3.png


プログラムはどこに書くの?

プロジェクトフォルダの中身を見てみましょう。

Freshman-Program-Prepare-SW4STM32-ScreenShot-5.png

我々が主に弄るのは,Src/main.cです。

main.cを覗いてみましょう。以下は,main.cの抜粋です。

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

これらは全て CubeMX で自動生成されたコードです。/* USER CODE BEGIN ... */やら/* USER CODE END ... */といった記述が目立ちますね。

我々はこれに加筆する形でmain.cを編集していきます。 main.cには,加筆しても良い箇所と加筆してはならない箇所があります。

/* USER CODE BEGIN ... *//* USER CODE END ... */ で囲まれた部分は加筆が許可されている部分です。それ以外の部分は弄ってはダメです。それ以外の部分を弄っても,CubeMXでプログラムを出力する度にリセットされてしまいます


実際,我々が加筆していくのは /* USER CODE BEGIN 2 */から/* USER CODE END 2 */の部分と,/* USER CODE BEGIN WHILE */から/* USER CODE END WHILE */の部分だけです。


ファイルを保存する

プログラムをコンパイル(ビルド)する前に,ファイルを保存(Save)する必要があります。

保存が済んでいないファイルには,ファイル名の左に『 * 』が表示されます。

Freshman-Program-Prepare-SW4STM32-ScreenShot-6.png


プログラムを保存するには,メニューの『File』の『Save』をクリックするか,下図で示すフロッピーディスクのようなアイコンをクリックします。 また,『Ctrl + S』(Macの場合『command + S』)というショートカットでも保存できます。

Freshman-Program-Prepare-SW4STM32-ScreenShot-7.png


プログラムをコンパイル(ビルド)する

プログラムをコンパイル(ビルド)する前に,コンパイル対象の全てのファイルが保存されていることを確認します。『 * 』が表示されているファイルは保存がなされていないので,保存しなさい。

トンカチのようなアイコンをクリックすることで,コンパイル(ビルド)がなされます。コンパイル(ビルド)に成功すると,.hex ファイルが生成されます。プログラムに不良箇所があると,エラーが吐かれます。

Freshman-Program-Prepare-SW4STM32-ScreenShot-4.png

【注意】たまに『Refresh』が必要

CubeMX で『GENERATE CODE』した直後などは,『Refresh』をおこなわないとエラーが解消しないことがあります。「ワイの書いたプログラムにはミスが無いはずなのにエラーが解消しないゾ?」というときは『Refresh』を試してみてください。

プロジェクト名の表示されている箇所を右クリックして,『Refresh』を押すと『Refresh』されます。

Freshman-Program-Prepare-SW4STM32-ScreenShot-8.png