サーチ…


備考

このセクションでは、stm32の概要と、なぜ開発者がそれを使いたいのかを概説します。

また、stm32内の大きなテーマについても言及し、関連するトピックにリンクしてください。 stm32のドキュメントは新しいので、これらの関連トピックの初期バージョンを作成する必要があります。

STM32とは何ですか?


STM32は、STマイクロエレクトロニクスが開発した32ビット・フラッシュ・マイクロコントローラ・ファミリです。 ARM®Cortex®-Mプロセッサをベースとし、高性能、リアルタイム機能、デジタル信号処理、低電力、低電圧動作を兼ね備えた32ビット製品群を提供します。

各シリーズ、開発ツール、および部品番号のデコードに関する詳細な説明は、 Wikipediaにあります。

製品シリーズ

Cortex-M0 / -M0 + Cortex-M3 Cortex-M4 Cortex-M7
ハイパフォーマンス: STM32F2 STM32F4 STM32F7STM32H7
メインストリーム: STM32F0 STM32F1 STM32F3
超低消費電力: STM32L0 STM32L1 STM32L4

開発ボード

STM32 Nucleombed対応 発見キット 評価ボード
典型的な使用例: 柔軟なプロトタイプ作成、コミュニティプロトタイピング、創造的なデモフル機能評価
拡張の可能性: +++ ++ ++
接続性: Arduino™、ST、Morpho ST ST

バージョン

バージョン発売日
1.0.0 2016-11-01

SW4STM32とHALライブラリを使用した点滅LEDの例で初めてのセットアップ

注: STM32にはすぐに使えるIDE、ツールチェイン、ライブラリがたくさんありますが、以下の設定では動作させるために最小限の労力を要しますが、それは多くの人の中のひとりです。ここで使用されるツールを誰かに強制的に使用させるこの例の目的)。


IDEのインストール

STM32のためのシステムワークベンチ :無料のWindows、Linux上のIDEとOS Xのそれはによって構築されたAC6とから登録後にダウンロード可能OpenSTM32コミュニティのウェブサイト

IDE自体はEclipseに基づいていますが、次のようなSTM32開発用の追加機能が付属しています。

  • Ac6 STM32 MCU GCCツールチェーン
  • OpenOCDとGDB(arm-none-eabi-gdb)は、ターゲットボードに応じて自動的に生成されたデバッグ設定
  • チップをプログラムまたは消去するためのオプションを内蔵

独自のボードを作成する前にSTM32から始めるには、ST-LinkというオンボードSWD(シリアルワイヤデバッグ)プログラマ/デバッガが付属しているDiscoveryNucleo、またはEvalボードを試してみることをお勧めします。

プロジェクトの作成

この例では、STM32F407VGマイクロコントローラを搭載したSTM32F4 ディスカバリキットを使用します。 (他のボードも使用できます)

  1. SW4STM32を開き、新しいCプロジェクトを作成します: ファイル→新規→Cプロジェクト

  2. 「STM32F4_Discovery-Blinky」のような名前を付け、 プロジェクトタイプリストからExecutable / Ac6 STM32 MCUプロジェクトを選択します。デフォルトで利用可能なツールチェーンは、 Ac6 STM32 MCU GCCのみです。次へをクリックします。

    ここに画像の説明を入力

  3. 次のステップはデバッグ/リリースの設定で 、[次へ]をクリックしてスキップできます。

  4. ボードの選択 。この例では、STM32F4検出または新しいカスタムボードを追加できるので、既存のボードを選択できます。

    ここに画像の説明を入力

  5. 次のステップはProject Firmwareの設定です。 ファームウェアなし 、SPL( Standard Peripheral Library )、またはHAL( Hardware Abstraction Layer )のいずれかを選択します 。どちらが開発に適しているかは疑問ですが、この例ではこの質問は範囲外です。この例では、ST Microelectronicsが現在サポートしているHALライブラリを使用します。 HAL用の追加ソフトウェアツールは、初期化コードジェネレータであるSTM32CubeMXです。また、 STM32CubeFxまたはSTM32CubeLxソフトウェア・パッケージでは、いくつかのアプリケーション例が利用可能です。ターゲットファームウェアがダウンロードされていない場合はそれをダウンロードして、 「プロジェクトで低レベルのドライバを追加する」「アプリケーションのソースとして」オプションを選択することをお勧めします。最後に、Finishをクリックします。

    ここに画像の説明を入力

点滅LEDアプリケーション

このプロジェクトはSTM32F4ディスカバリーを使用して作成されているため、ディスカバリーキットの周辺機器(加速度センサー、オーディオなど)とのインターフェースに使用できる/ STM32F4_Discovery-Blinky / Utilities / STM32F4-Discovery /プロジェクトフォルダーには、 、LED、プッシュボタン)。この例ではvoid BSP_LED_Init(Led_TypeDef Led)及びvoid BSP_LED_Toggle(Led_TypeDef Led)の関数である緑色LED、点滅するstm32f4_discovery.cファイルから使用されるLED4ディスカバリーキットの回路図を使用するLEDを決定する。

ここに画像の説明を入力

実際のピン名とポート名は既にいくつかの#defineenumで隠されており、 Ctrl +クリックでそれらを追跡します。

  1. main内部では、 HAL_Init()関数を呼び出して、すべての周辺機器をリセットし、FlashインターフェイスとSystickを初期化します。 (Systickは、点滅の遅延を生成するために使用されます)。
  2. システムクロックを設定する必要があります。これは、 STM32CubeMXクロック構成機能またはリファレンス・マニュアルを使用して実行できます。この例では、システムクロックは、外部の8 MHz水晶発振器(HSE)によって供給される内部PLL(位相ロックループ)によって供給されます。プリスケーラは、F4ディスカバリの場合、最大利用可能周波数(168 MHz)を達成するように設定されています。
  3. 周辺機器の初期化(この場合はGPIOピン)。
  4. 無限ループ内で、LEDトグルとHAL_Delay()関数を呼び出します。 HAL_Delay()Systickを使用し、ミリ秒Systickで遅延を生成します。

コード全体は次のとおりです。

#include "stm32f4xx.h"
#include "stm32f4_discovery.h"
            
void SystemClock_Config(void);

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

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

    /* Initialize one of the LED GPIO pin */
    BSP_LED_Init(LED4);

    while(1)
    {
        BSP_LED_Toggle(LED4);
        HAL_Delay(1000);       // in miliseconds
    }
}

/**
 * @brief  System Clock Configuration
 *         The system Clock is configured as follow :
 *            System Clock source            = PLL (HSE)
 *            SYSCLK(Hz)                     = 168000000
 *            HCLK(Hz)                       = 168000000
 *            AHB Prescaler                  = 1
 *            APB1 Prescaler                 = 4
 *            APB2 Prescaler                 = 2
 *            HSE Frequency(Hz)              = HSE_VALUE
 *            PLL_M                          = (HSE_VALUE/1000000u)
 *            PLL_N                          = 336
 *            PLL_P                          = 2
 *            PLL_Q                          = 7
 *            VDD(V)                         = 3.3
 *            Main regulator output voltage  = Scale1 mode
 *            Flash Latency(WS)              = 5
 * @param  None
 * @retval None
 */
void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;

  // Enable Power Control clock
  __PWR_CLK_ENABLE();

  // The voltage scaling allows optimizing the power consumption when the
  // device is clocked below the maximum system frequency, to update the
  // voltage scaling value regarding system frequency refer to product
  // datasheet.
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  // Enable HSE Oscillator and activate PLL with HSE as source
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

  // This assumes the HSE_VALUE is a multiple of 1MHz. If this is not
  // your case, you have to recompute these PLL constants.
  RCC_OscInitStruct.PLL.PLLM = (HSE_VALUE/1000000u);
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
  // clocks dividers
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
}

ハンマーで構築するここに画像の説明を入力プロジェクトフォルダを右クリックし、[ ターゲット]→[プログラムチップ... ]オプションを選択してアプリケーションをダウンロードします。

ダウンロードするもう一つの方法は、 debugを使うことです。そうするには、バグアイコンの横にある矢印をクリックしてくださいここに画像の説明を入力ツールバーの[ Debug Configuration ... ]メニューを開きます。新しいAc6 STM32デバッグ設定を作成し、 C / C ++アプリケーションフィールドが空の場合は、次の情報を入力します。

デバッグ\ STM32F4_Discovery-Blinky.elf

OpenOCD設定ファイルや使用されているTelnetやGDBポートなどのその他のデバッグパラメータは、自動的に生成され、フレームワークによって埋められます。最後に、[デバッグ]ボタンをクリックします。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow