圏9研究所 工作室

圏9研究所の開発情報資料など

STM32CubeIDE Ver2 テキスト選択問題

STM32CubeIDE macOS Tahoe 26でのテキスト選択問題対策

1.概要
 macOS 26へアップデートしたところSTM32CubeIDEのテキスト選択で複数行選択しても1行しかハイライトされない問題が発生したため対策を調査・実施
 
2.不具合情報と調査
1)不具合に関するスレッド
Cannot select multiple lines of text in Eclipse 2025-09 on macOS Tahoe 26.1 #2244

github.com

(1)要点
 macOS Tahoe 26.1 でSTM32CubeIDEを使用
 ・複数行のテキストを選択することは可能
 ・視覚的なフィードバックだけが機能しない

(2)問題点と対策
 Eclipseのバージョンが古い
 Tahoe 26.2 と Eclipse 4.38(2025-12)では、上記のような問題はない

3.課題と対策
1) STM32CubeIDEでの課題
 最新のSTM32CubeIDE V2.1.1はEclipse 2024-09で構成されている
 このため不具合が発生する
 残念ながらEclipseのみのアップデートはサポートされていない

2)対策内容
(1)対策内容と参照ページ
 アップデートが必要なプラグインを手動で入れ替える

macOS 26.1 Tahoe - ベンダーEclipse-IDEのテキスト選択問題修正

4.対策実施内容
参照ページはリンク切れ等あるので補足
1)手順
(1)プラグインダウンロードURL
Eclipse  HOME / DOWNLOADS / REPORT / DOWNLOAD.ECLIPSE.ORG / STAGING

download.eclipse.org

ここでファイル名を手掛かりに最新版を探す

(2)ダウンロードファイル
org.eclipse.swt_3.132.0.v20251124-0642.jar
org.eclipse.swt.cocoa.macosx.aarch64_3.132.0.v20251124-0642.jar

参照ページではx86_64が必要となっていたがこちらの環境(詳細下記)ではaarch64で動作中

(3)プラグインファイル変更
・元のファイル退避
/Applications/STM32CubeIDE.app/Contents/Eclipse/plugins
 org.eclipse.swt_3.127.0.v20240903-0618.jar
 org.eclipse.swt.cocoa.macosx.aarch64_3.127.0.v20240903-0618.jar

・ダウンロードしたファイルのファイル名を元のファイル名に変更
・pluginsフォルダー内へコピー
 上書きでも良い

(4)おまじない
$HOME/.swtを削除

・ファインダーでホームディレクトリーを表示
・「command」+「shift」+「.」 で、隠しファイル表示
・.swtフォルダを削除

4.動作確認
 STM32CubeIDEを起動してテキスト選択してみる
 うまく変更できていないとエラーで起動しない

5.解説
・問題なく動いているので次のバージョンアップまではこれでいけそう
 参照ページではどうやって調べたのかわかりませんがありがたく使わせていただいています
・ 元のファイルがaarch64だったのでaarch64を使用
・ x86_64ファイルの使用については未確認
・ファイル名変更要否は未確認

6.おまけ:STM32CubeIDE Ver2 使い方メモ
1)使い方とポイント
(1)参考資料
STM32CubeIDE Ver.2.0.0の仕様変更

qiita.com

(2)ポイント
・MXとIDEは別々のアプリになった
 別々の方がスッキリして良い
・STM32CubeMX「Project Manager」タブ内「Toolchain / IDE」の設定変更

2)バージョン情報
・MacBook Air M1, 2020
 macOS 26.4 Tahoe
・STM32CubeMX Ver 6.17.0
・STM32CubeIDE Ver 2.1.1
 ST-Link V2J47S7

 

おしまい

STM32C011低消費電力モード(4) Shutdown modeとwake-up pin

1.概要
 Shutdownモードへの遷移とwakeup pin での解除

2.資料
1)参考資料
 Standbyと同じ

3.コード例概要
1)低消費電力モード
 低消費電力モード:Shutdown
 ウェイクアップ:wake-up pin

2)コード
  Shutdownモードへの遷移とwakeup pin での解除

4.wake-up pin 構成
1)ブロック図
 Standbyと同じ

2)STM32C011J4/J6 wake-up pin
 Standbyと同じ

pin No.

Wake-Up

Default

4

Wake-Up 1

NRST

Input

pull-up

Wake-Up 4

8

Wake-Up 3

SWCLK

Input

pull down

 

3)Shutdownシーケンス

Mode / Resource

Run

Shutdown

wake-up

備考

PWR_FLAG_WUF

L)

L

H

wake-up 遷移フラグ

wake-up でセット

H状態のままShutdown に入るとすぐに復帰する

・各wake-up pin 個別にセットされる

GPIO及び周辺回路

動作

停止

再設定

wake-up後再設定必要

 

5.STM32CubeMX設定
 Standbyと同じ

6.コード
1)Shutdownから復帰
 StandbyのようにShutdownからの復帰かどうかを識別保持するレジスターはない

2) Shutdownへ遷移

 HAL_SuspendTick();
  //__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF);
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1_LOW);
  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN3);
  HAL_PWR_EnterSHUTDOWNMode();

STM32C011低消費電力モード(3)Standby modeとwake-up pin

1.概要
 Standbyモードへの遷移とwakeup pin での解除

2.資料
1)参考資料
・STM32C0 - PWR(電源制御)
・AN4759
 Introduction to using the hardware real-time clock (RTC) and the tamper management unit (TAMP) with STM32 MCUs
・UM3029
 Description of STM32C0 HAL and low-layer drivers

3.コード例概要
1)低消費電力モード
 低消費電力モード:Standby
 ウェイクアップ:wake-up pin

2)コード
  Standbyモードへの遷移とwakeup pin での解除

4.wake-up pin 構成
1)ブロック図
 内蔵プルアップ、プルダウンとシュミット入力バッファを介してウェイクアップ非同期ラッチ回路に直結
 ・動作状況から推測
 ・ポート設定状態に関わらずウェイクアップ入力として使える

2)STM32C011J4/J6 wake-up pin

pin No.

Wake-Up

Default

4

Wake-Up 1

NRST

Input

pull-up

Wake-Up 4

8

Wake-Up 3

SWCLK

Input

pull down

3)Standbyシーケンス

Mode / Resource

Run

Standby

wake-up

備考

PWR_FLAG_SB

-

H

H

Standby mode 遷移フラグ

Standby mode 遷移でセット

PWR_FLAG_WUF

L)

L

H

wake-up 遷移フラグ

wake-up でセット

H状態のままStandby に入るとすぐに復帰する

・各wake-up pin 個別にセットされる

GPIO及び周辺回路

動作

停止

再設定

wake-up後再設定必要

5.STM32CubeMX設定
1)GPIO
 いずれのピンも必要に応じて設定
 ・LED2(PC14) : Output LED2
 ・ADC1_IN12 : SWD復帰シーケンス遷移用
 ・GPIO_Input(PA0) :  NRSTマスク用

2)Power and Terminal
 PWR 設定不要

6.コード
1)Standbyから復帰

if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET)  // ? from standby
  {
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
    HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
    HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN3);
  }
else
  {
  }

STM32C011低消費電力モード(2)RTCとウェイクアップ

RTCによるウェイクアップ詳細とアプリケーション例

1.概要
 STOPモードへ遷移しRTC Sub Second Alarm で解除する

2.資料
1)お手本
RTC as wakeup-source on C0 family

2)参考資料
 ・STM32C0 - PWR(電源制御)
 ・STM32C0 - RTC
 ・AN4759
  Introduction to using the hardware real-time clock (RTC) and the tamper management unit (TAMP) with STM32 MCUs

3.アプリケーションイメージと仕様
1)アプリケーションイメージ
 車載イモビライザー用インジケーターのようなLED瞬灯点滅

2)モード
 低消費電力モード:STOP
 ウェイクアップ:RTC Sub Second Alarm A

3)仕様
  LED瞬灯点滅周期:約500ms
  LED瞬灯時間設定:分解能 約4ms

4.RTC Sub Second Alarm A
1)カウンター構成
(1)ブロック図

(2)デフォルト周波数
 Sub Secondのクロック ck_apre = rtc_ker_ck / Async
  低速内部32kHz RC発振器(LSI)デフォルト

Clock

用途

Frequency

Period

Rate

rtc_ker_ck

Source

32kHz

31.25 us

-

ck_apre

Sub Second

250 Hz

4 ms

1/128

ck_spre

Second

0.9466 Hz

1.024 sec

1/256

 

【参考】

Clock

用途

Frequency

Period

Rate

rtc_ker_ck

Source

32kHz

31.25 us

-

ck_apre

Sub Second

250 Hz

4 ms

1/128

ck_spre

Second

1 Hz

1 sec

1/250

 

Clock

用途

Frequency

Period

Rate

rtc_ker_ck

Source

32.768 kHz

30.32 us

-

ck_apre

Sub Second

256 Hz

3.906 ms

1/128

ck_spre

Second

1 Hz

1 sec

1/256

2) Alarm A 構成
(1)ブロック図

(3)Sub Second ブロック図
 アラーム動作から推測したブロック図
 ・詳細はデータシート等に記載されていない
 ・Sub SecondのAlarm A設定時間更新タイミングはSub Secondアラーム一致毎

(4)マスク設定とSub Second アラーム比較判定周期 LSE=32.768kHz

(5)Sub Second Alarm A設定値一覧

レジスタ

内容

RTC prescaler register

 RTC_PRER

PREDIV_A[6:0]

Sub Secondカウンタプリスケラー

 カウントクロック設定

RTC alarm A sub second register   

 RTC_ALRMASSR

MASKSS[3:0]

Sub Secondマスク

 アラーム比較判定周期設定

SS[14:0]

Sub Seconds

 Alarm A設定時刻

 

5.コードシーケンス
1)シーケンス

2)タイミング

6.STM32CubeMX設定
1)Clock Configuration
 RTC : 32kHz(32.768kHz)
 SYSCLK : 任意

2)RTC
 Alarm A
 Alarm Mask : RTC_ALARMMASK_ALL
 Alarm Sub Second Mask : Only SS[6:0]
 NVIC : Enable

3)GPIO
 PC14 : Output LED2

7.コード
1)<main.c> 抜粋

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
#define LED2_ON HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
#define LED2_OFF HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
#define LED2_TOGGLE HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);

//
//	RTC callback
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc)
{
}

//
//	delay by STOP
void delay_stop(void)
{
  HAL_SuspendTick();
  HAL_PWREx_EnableInternalWakeUpLine();
  HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFE);
  SystemClock_Config();
  HAL_ResumeTick();
}
/* USER CODE END 0 */

STM32C011低消費電力モード(1)機能概要

1.概要
 STM32C011は5種類の電力モードがありその内4種類が低消費電力モードになっている
 低消費電力モードへの遷移復旧や書き込みについてまとめる

STM32C011 Writer Adapter(7)低消費電力モードの詳細(重複内容あり)

luke24e-2h.hatenablog.com

2.参考資料
 ・RM0490 Reference manual
 ・STM32C011x4/x6 Datasheet - production data
 ・STM32C0 - PWR(電源制御)
 ・AN5673 Getting started with STM32C0 MCU hardware development

3.各電力モード比較

機能

リソース

RUN

SLEEP

STOP

STANDBY

SHUTDOWN

リセット

NRST

BOR/POR/PDR

×

IWDG

×

ウェイクアップ

ウェイクアップ・ピン

RTC / オート・ウェイクアップ

(×) ※1

×

LSEクロック・セキュリティ

×

×

すべてのGPIO

USART1/2

×

×

I2C1

×

×

デバッグ

SWD

×

×

×

クロック

HSI48, HSE, CSS

×

×

×

LSI

×

LSE, LSECSS, ペリフェラル

×

×

モリー

Flash

×

×

×

SRAM

×

×

バックアップレジスタ

×

消費電流

電流標準値

58uA/MHz

 at 48MHz

20uA/MHz

 at 16MHz

80uA

7.45uA

19nA

消費電流目安

2.78mA

320uA

実測値

77uA

7.8uA

測定不能

※1 リファレンスマニュアルにはRTC停止と書かれているが
   STM32C0- PWR(Power management) にはリセットリソースとして有効になっている
※2 GPIOはアナログモードに設定されてPU/PD/フローティングは保持される
※3 計測可能な測定器を持っていないため

4.低消費電力モードでのデバッグ機能 コード書込みについて
1)デバッグ機能の状態
 ・ STOP、STANDBY、SHUTDOWNでFCLKとHCLKが停止するのでデバッグ機能が停止する
 ・デバッグ機能を維持するには
   STOP:DBG_CRレジスタのDBG_STOPビットを設定
   STANDBYとSHUTDOWN: DBG_STANDBYビットを設定
  ただし、 FCLKとHCLKがアクティブになるため消費電力が増加する

2)コード書込み
(1)問題点
 SWDピンがSWDモードになっていても書き込みできない場合がある

(2)書き込みできない状態
  NRSTピンがポートモードで起動後少なくとも概略300ms〜800msの間STOP、STANDBY、SHUTDOWN状態になっている
  起動後すぐに低消費電力モードへ遷移し待機する場合等デバッグ機能停止により書込復旧できない

(3)対応策
 起動後SWDモード保持或いはSWDポートに復帰する例外シーケンスを書き込んでおく等
 詳細
 STM32C011(4)書込み要件

luke24e-2h.hatenablog.com

5.解説
1)全般
・消費電流が許容できれば処理継続が容易なSTOPモードが使いやすい
・NRST、SWDピンをポートモードで使う場合は書込み・復旧できなくなる可能性が高いので事前対応が必要

2) NRST、SWDピンをポートモードで使う場合
(1)状況
 STOP、STANDBY、SHUTDOWNを使用するとSWDピンがSWDモードになっていても書込み・復旧できなくなる状況が多いと思われる
 SWD復帰シーケンスを書いておくと安心
(2)電源再投入(Power On Reset)でリセットを発生させる場合
 ・STOP、STANDBYは対応可能
 ・SHUTDOWNは動作が保証されているかは不明であるが動作すると思われる
  Shutdown mode 遷移後チップが動作する電圧範囲内では電源系リセットは無効
  BORリセットへ遷移するのはNRSTとウェイクアップ・ピンのみ
  電圧が低下すると動作状態不定
  マニュアル等にShutdown mode 遷移後の電源再投入でリセットが機能するかどうかの明確な記述は見当たらないが記述状況から動作すると思われる
  念のためNRSTピンはAN5673(Getting started with STM32C0 MCU hardware development)推奨回路相当にするのが無難
  サンプル数は少ないが動作は確認済

続く

STM32C011 Writer Adapter(8)使い方メモ

1.STM32CubeIDEデバッガ設定
 デフォルト設定から変更なし

 

2.接続

1)ST-LINK接続
 RSTは未接続

2)電源
 電源は3V3に接続し3V3_OUTからターゲットに供給する

3)ターゲットオンボード書き込み注意事項
(1)ターゲット側電源回路
 ・3端子レギュレーターや類似回路構成の電源回路がある場合は接続しないこと
  使用する場合は3端子レギュレーター入出力間にダイオードを入れる等の保護回路を設けておく
 ・Writer Adapterの電源リセット機能によってターゲットチップの電源電圧が2msec以内に低下しないと書き込めない
  ターゲット側電源に逆接続防止回路(ダイオード等)、容量の大きなコンデンサ、電流制限抵抗等々がある場合

【参考】
【3端子レギュレータとは?】『使い方』や『型番(7805等)』などを分かりやすく解説!

detail-infomation.com

(2)SWDIO, SWCLK
 ・通信に支障がない回路構成にすること
  ST-LINK側が電流制限抵抗等で保護されている場合は出力ポートに設定できる

(3)NRST
 ・Writer Adapter側出力ポートで駆動できる回路構成にすること
  ターゲット側NRSTピンに接続された静電容量が大きいとH出力後の充放電遅れによって書き込めなくなる場合がある
  ターゲット側STM社推奨のC104接地で動作確認済
   Writer Adapter側出力ポートはST-LINK回路に倣って電流制限抵抗R101で保護

 

3.操作手順
1)Runモード
 ・ライター側Run起動
  状態 Run Wait : LED赤と緑が点灯してから起動する(書き込み起動確認5秒間待ってから)
 ・書込み起動後のSWDポート通信状態
  有効:自動的にターゲット通電状態戻り書き込み起動確認5秒間待ってから連続して書き込める
  無効:ターゲット通電状態に戻らないためWriter Adapter再起動(電源OFF-ON)が必要

 リカバーシーケンスは実装していないため書込みエラーが発生した場合はWriter Adapter再起動(電源OFF-ON)が必要

2)Debugモード
 ・ライター側Debug起動
  状態 Run Wait : LED赤と緑が点灯してから起動する(書き込み起動確認5秒間待ってから)
 ・Resume Debug継続
  起動後はSWDポート通信が可能であれば随時Debug継続操作可能

状態

時間

LED

操作

RST_OUT

3V3_OUT

起動

-

 

●◯

 

ターゲット通電

5sec

 

Debug WaitDebug起動後)

-

ライター Resume起動

Power Down Reset

2msec

 

Run Wait

-

ライター Run, Debug起動

書込み

-

●◯

 

 

4.低消費電力モード対応
 低消費電力モードで待機中の書込みについて
 ・NRSTピンがポートモードでSHUTDOWNモード待機中は電源系リセットが無効のための書込みできない
   SWD復帰シーケンスを書いておく
 ・ STOP、STANDBYは書込み可能

 

おしまい

STM32C011 Writer Adapter(7)低消費電力モード

低消費電力モードを使用する場合の注意事項

1.概要
 低消費電力モードでデバッグ機能が停止して書き込めなくなる場合があるので問題点と対応策について

2.低消費電力モードでのデバッグ機能
1)STマイクロ社資料
(1)RM0490 Reference manual
 30.9.1 Debug support for low-power modes

(2)要約
 ・ STOP、STANDBY、SHUTDOWNでFCLKとHCLKが停止するのでデバッグ機能が停止する
 ・デバッグ機能を維持するには
   STOP:DBG_CRレジスタのDBG_STOPビットを設定
   STANDBYとSHUTDOWN: DBG_STANDBYビットを設定
  ただし、 FCLKとHCLKがアクティブになるため消費電力が増加する

3.問題点と対応
1)問題点
 下記の場合SWDピンがSWDモードになっていてもデバッグ機能停止により書込み・復旧できない
 ・NRSTピンがポートモードになっている
 ・起動後少なくとも概略300ms〜800msの間STOP、STANDBY、SHUTDOWN状態になっている
  例えば、起動後すぐに低消費電力モードへ遷移し待機する場合

2)対応策
 起動後SWDモード保持或いはSWDポートに復帰する例外シーケンスを書き込んでおく等
 詳細
 STM32C011(4)書込み要件

luke24e-2h.hatenablog.com

 

4.解説
・NRSTピンをポートモードにして低消費電力モードを使用するとSWDピンがSWDモードになっていても書込み・復旧できなくなる状況が多いと思われる
・NRSTピンをポートモードで使う場合はSWD復帰シーケンスを書いておくと安心

 

更に調査中