STM32G031J6M6で6GPIOを使用する。


使用機材
あいてんどうで売っている ぞくに中華ST-LINK
STM8/STM32ライタ[STLINKV2]

x 3秒のウエートを消すと書き込めなくなる。
x 3秒いないにst-linkを接続する。
x場合によっては、ST-LINKから上手く書き込めなくなるので上級者用

1.STM32CubeProg...を起動する。
2.接続する。
3.OBをクリックする。
4.User Configurationを開く
5.nBooT_SELをUnchecked(チェックを外す)にする。
6.NRST_MODEを2にする。
7.Applyをクリックして書き込む。
8.STM32CubeProg...を終了する。
9.下記のプログラムをVSCでコンパイルする。
10.何らかの方法でSTM32G031J6M6にプログラムを書き込む。
11.6GPIO使える用になりました。

いろいろ
リセットは、起動時にハイ
bootオプションは、起動時にロー
ledの順電流でうまくセットするアイディア(当然ひからない)

遊び終わった後のチップイレースの方法

何か書き込もうとしても書き込み出来ないろ。 たいへんだ(カリオストロの城の銭形風)

3秒以内にST-LINKを抜き差して、コネクトボタンを押す。

))))どや((((せつぞくできたやろ 失敗じは、リトライ

STM32G031J6M6は、復活しました。おわり

事前にシリアル書き込み出来るようにしておく安全
STM32G031J6M6のUSARTシリアル通信書き込み
https://qiita.com/caa45040/items/7b01959867d5b5cc01d6



#include <Arduino.h>

#define led1 PA8
#define led2 PA12
#define led3 PA0
#define led4 PA14
#define led5 PA13
#define led6 PB7

#define DW   digitalWrite

void setup() {
  // !!! swdclk(PA8) or swdio(PA12) not erase 3seconds !!!
  delay(3000);

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(led5,OUTPUT);
  pinMode(led6,OUTPUT);

  DW(led1,!(1));
  DW(led2,!(1));
  DW(led3,!(1));
  DW(led4,(1));
  DW(led5,(1));
  DW(led6,(1));
  delay(3000);
}

void loop() {
  DW(led1,!(1));delay(1000);
  DW(led1,!(0));//delay(1000);
  DW(led2,!(1));delay(1000);
  DW(led2,!(0));//delay(1000);
  DW(led3,!(1));delay(1000);
  DW(led3,!(0));//delay(1000);
  DW(led4,(1));delay(1000);
  DW(led4,(0));//delay(1000);
  DW(led5,(1));delay(1000);
  DW(led5,(0));//delay(1000);
  DW(led6,(1));delay(1000);
  DW(led6,(0));//delay(1000);
}