PA2出力が便利だよ
シリアルUSBには、次の物を使用した。
FT234X 超小型USBシリアル変換モジュール
[AE-FT234X]
通販コード M-08461
発売日 2014/10/07
メーカーカテゴリ 株式会社秋月電子通商
ST-LINKは、ぞくに言う中華ST-LINKを使用した
STM8/STM32ライタ [STLINKV2]
販売価格: 500円(税別)
参考在庫数 18点
数量:
●概要
●仕様・機能
ST-LINK V2互換ライタ、自動アップグレードサポート,STM32全シリーズSWD/STM8全シリーズSWIM対応、3.3V/5Vサポート、IDC 5Px2コネクタ、USBタイプAコネクタ、本体のみ、表記価格:1
1.TXとRXを接続
2.電源の接続
3.下記のソースコードを書き込む
4.コンパイル実行で表示されたら終了
5.おわり
そのた
3秒のウエートは、消さないこと、STM32G031がむだになるかも
リセットが有効でないとき(ソフトウェアリセット)は、3秒以内に
ST-LINKを接続する。(delay(3000);の事)
中華ST-LINKのリセットを有効にしたい場合は、次のリンク参考
https://denshikousakusenka.jimdofree.com/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89/stm32/st-link-v2-clone%E3%81%ABreset/
自分は、PB0リセット改造済み
STM32G031J6M6のオプションビットを設定しておく。
リセットが有効、シリアルブートが有効
xリセットオンリー(1)をテスト前に必ず確認しておく事、忘れると
書き込み出来なくなる。たまたま、シリアルブートオプションの設定が
生きていたので復活できた。
x>>現実的には、リセットの改造をしておかないとだめかも。<< 古い
3秒ウェートの位置が間違っていた、これで3秒ルールが使える 2/15
x場合によっては、ST-LINKから上手く書き込めなくなるので上級者用
中華ST-LINKのリセット改造済みかどうかでコンパイル以降の手順が異なる。
あなたは、リセット改造なしの場合
1.シリアル通信は、繋がず、コンパイル実行する。
2.ST-LINKを外しシリアル通信と3.3V電源(3.3VorGND)を接続する。
(本体マイコン、シリアル通信の電源の順に繋ぐ)
3.テストし終わったら、シリアル通信を外す。
5.ST-LINKを繋ぎ、3秒以内にST-LINKソフトで接続する
6.チップイレースをするといつも通り使える用になる。
7.おわり
あなたは、リセット改造済みの場合
xリセット端子は、接続しておく。ST-LINK(リセット)->G031(リセット)
1.シリアル端子は、繋がず、コンパイル実行する。
2.一旦、ST-LINKを外す。
3.シリアル通信のtx,rx,gndを繋ぐ。
4.ST-LINKを繋ぐ。
5.シリアル通信のUSBを繋ぐ。
テラタームも立ち上げる
6.コンパイル実行する。
7.ハローワールドと表示され一文字エコーされる。テストする。
8.修正か゛あればリコンパイルする。
9.テストが終わったらシリアル端子USBを抜く
10.ST-LINKを抜く
11.おわり
xST-LINKやシリアル通信USBを抜いたり挿したりしていたらあさっての方向に
行ったのでなんとなくこの手順になった。テスト時にリセットの為にリコンパイルしている。
復活方法の参考
STM32G031J6M6で6GPIOを使用する。
https://qiita.com/caa45040/items/0e444df2e0a60e763718
STM32G031を使用した。液晶時計ができました。
STM32G031のArduinoでの時計,DS1307で時刻表示( AQM0802A i2c)(STM32G031J6M6)
https://qiita.com/caa45040/items/fee158b4d04a5139bae0
LPC1114のMbedでの時計,DS1307で時刻表示( AQM0802A i2c)(ハードはichigojam)
https://qiita.com/caa45040/items/5f0e7f0f3ebcae613ec2
//#define swdclk PA14 // 8pin
//#define swdio PA13 // 7pin
//#define t_led1 PA12 // 6pin
//#define t_led2 PA11 // 5pin
//#define en PA0 // 4pin
//#define in7 PB7 // 1pin
// tx PA14(PB6) 8PIN
// rx PC14(PB7) 1PIN
char u_key; // 受信データを格納するchar型の変数
char ch_in_key() {
// 受信データがあった時だけ、処理を行う
while(!Serial.available()) {} // 受信データがあるか?
u_key = Serial.read(); // 1文字だけ読み込む
return(u_key);
}
void setup() {
// put your setup code here, to run once:
//Serial.begin( 9600 ); //bug
delay(3000); //not Delete
Serial.begin( 9600 ); // シリアル通信の速度を9600bpsにする。
Serial.println("Hello World !");
} //setup
void loop() {
// put your main code here, to run repeatedly:
// ch_in_key()で一文字受信してSerial.printで一文字送信する。
Serial.print( ch_in_key() ); //送受信
} //loop
USARTを有効化