akira.kei が 2026年03月15日09時35分25秒 に編集
コメント無し
本文の変更
[<前の記事](https://elchika.com/article/360370e6-604d-417a-afea-192728699e92/) : 次の記事> ## 公式開発環境MounRiver Studio 2 CH32Vシリーズの開発環境は大雑把には3つで下の二つは派生したやり方が色々ある。 1. 公式のMounRiver Studio 1. Arduino IDE (公式、UIAPduino) 1. ch32fun (make等CUI) 電子工作界隈で開発環境が定まっておらず、なんだか迷走しがちなのはどうもMounRiver Studioが皆様にとって「趣味に合わない」からなのでは?という印象だ。EclipseベースからVScodeベースに変更された公式開発環境であるMounRiver Studio2だが、確かに趣味が合わない人が多いと思う。 初代のMounRiver StudioはWindows環境しか相手にしていなかったが、二代目はLinuxでもmacでもインストールできる。特に問題なくウチのMac Miniにもインストールできた。  ## Project作成画面から嫌な予感 二代目からはVScodeベースになったということは普通に日本語も表示されるんだろうと期待したがそんなことはなかった。巷のVScdeの解説はコマンドパレットからConfigure Display Languageで日本語を指定するところから始める場合が多いが、MRS2では英語と中国語しか選択肢がないし、そもそも機能拡張はできないようになっている。 諦めてUIAPduinoをMCH-LinkEで接続してプロジェクト作成を行なってみる。UIAPduinoは```CH32V003F4U6```っぽいのでこれを指定した。  PIC開発でMCCを使うとペリフェラルを選ぶとそれに関連するソースがプロジェクトに取り込まれる、という方法だったが、MRS2の場合はPeripheralフォルダ内に全部用意されている。メインから```#include```して使うんだろうな。  ## main関数でお腹いっぱい ユーザが書き換えるのはUserフォルダ内が基本だが構成はこうなっている。  main.cのmainルーチンはこんな風になっている。 ``` int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(115200); printf("SystemClk:%d\r\n",SystemCoreClock); printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() ); USARTx_CFG(); while(1) { while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET) {} val = (USART_ReceiveData(USART1)); USART_SendData(USART1, ~val); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET) {} } } ``` う。多くね? ## システムクロック設定
デフォルトでは外部クロック(HSE)の48MHzに設定されているが、これを内部クロック(HSI)に変更する必要がある。デフォルトで内部24MHzで駆動され、下記の定義によって変更されるが安定しなければ内部24MHzに戻される。
デフォルトでは外部クロック(HSE)の48MHzに設定されているが、これを内部クロック(HSI)に変更する必要がある。デフォルトで内部24MHzで駆動され、下記の定義によって変更されるが安定しなければ内部24MHzに戻される。```system_ch32v00x.c```内でいずれかを選択すれば良い。
```c: //#define SYSCLK_FREQ_8MHz_HSI 8000000 //#define SYSCLK_FREQ_24MHZ_HSI HSI_VALUE //#define SYSCLK_FREQ_48MHZ_HSI 48000000 //#define SYSCLK_FREQ_8MHz_HSE 8000000 //#define SYSCLK_FREQ_24MHz_HSE HSE_VALUE #define SYSCLK_FREQ_48MHz_HSE 48000000 ``` 実際に8MHz、24MHzおよび48MHzに変更してみたが普通に動いた。ただし、24/48MHzの場合はwhile(1)ループ中になんか変なデータが入力されるようで、大量なゴミデータが出続ける。  ## これ使い続ける? 多くの人がArduino IDEもしくは普通のVScodeを選ぶ理由がわかったような気がする。今後はどうしようかな。。。