CCWO Embedded Space

CCWOの日々の開発を発信するブログ

STM32 F401RE Output

開発環境
・評価ボード NUCLEO-F401RE
・IDE MDK-ARM V5 and STM32CubeMX
・OS windows 10 pro
・本

NUCLEO F401REを使って、基板に実装されているLEDをまずは光らせたいと思います。
STM32CubeMXを開き,New Projectを選択します。
Board Selectorタブの
Vendor: STMicroelectronics
Type of Board: Nucle64
MCU Series: F401RE
を選択します。
f:id:CCWO:20160904160425p:plain
Nucleo-F401REのデフォルトプロジェクトではPC13がボタン、PA5がLED(緑)に割り当てられているのでこのまま使用します。
f:id:CCWO:20160914134247p:plain
デフォルトプロジェクトのまま上メニュー→Project→Settingsを選択します。
f:id:CCWO:20160914134726p:plain
Toolchain/IDEをMDK-ARM V5を選択し、OKを選択します。
この状態で上メニュー→Project→Generate Codeもしくは上の歯車ボタンを押します。
これでMDK-ARM V5にプロジェクトが出力されました。
f:id:CCWO:20160914134930p:plain
Open Projectを選択し、プロジェクトを開きます。
MDKARMのApplication/Userのmain文には

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

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
#define LED_PORT 		GPIOA
#define LED_PIN				GPIO_PIN_5
#define LED_ON				GPIO_PIN_SET
#define LED_OFF			GPIO_PIN_RESET
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

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();

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

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

  /* USER CODE BEGIN 2 */
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_ON);
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_OFF);
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_ON);

  /* USER CODE END 2 */

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

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

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();

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

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

  /* USER CODE BEGIN 2 */
	// HALGPIO_WritePin(ポート名, ポート番号, 値);
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_ON);
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_OFF);
	HAL_GPIO_WritePin(LED_PORT, LED_PIN, LED_ON);

  /* USER CODE END 2 */

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

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

とします。これでBuild(F7)を選択します。
そして、右上Dボタンのマークでデバッグを開始します。
f:id:CCWO:20160914135732p:plain
あとは、メニュー左上のデバッグ操作ボタンでデバッグをしていきます。
f:id:CCWO:20160914135900p:plain
今回はLEDをON,OFF,ONとしているので、ブレークポイントを3つHAL_GPIO_WritePin関数の部分に置いて、Runを実行していけば、点滅させることができれば成功です。
f:id:CCWO:20160914140101j:plain
デバッグを終了する際はまたDボタンを押します。デバッグの段階でマイコンにプログラムはダウンロードされているので、デバッグしないときは電源を投入すればプログラムが実行されます。

20160904の記事