1. MounRiver Studioはじめに
(1)MounRiver Studio概要
|
ホームページの About によると
MounRiver Studioは、Eclipse GNU版をベースに開発されています。
と記載されており、MounRiver Studioから Windows,MAC,Linux版がダウンロードできます。オリジナルのプラットフォームの強力なコード編集機能と便利なコンポーネントフレームワークを維持しながら、組み込みC/C++開発ができる。 そしてツールチェーン開発向けに、インターフェース、機能、操作の修正、最適化を多数施しています。 私は MounRiverStudio_Linux_X64_V220.deb をダウンロードして、パッケージをGDebiパッケージインストーラでインストール(ファイルをダブルクリック)しました。 起動した状態は下図のようになります。使用方法はいつの日か別のページで記載したい。
|
(2)WCH-LinkE の設定
|
WCH-LinkEのモード切替はこの MounRiverStudio から変更ができる。 ・WCH-LinkE をパソコンに接続する。 ・MounRiverStudio の 「 Flash 」 の 「 Download Configuration 」 を選ぶ。 ![]() 下図のダイヤログボックスが表示される。 ・項目「 Debugger Taeget Mode: 」 で [ ARM ] または [ RISC-V ] が選択出来る。
|
(3)MounRiver Studioの準備
|
a.今回は CH32V293K8T6 の開発環境として設定する。 ・MounRiverStudio の 「 File 」 の 「 New 」 、「 MounRiver Project 」 を選ぶ。 ![]() ・続いて New MounRiver Project のダイヤログボックスが表示される。 ・WCH の 項目で [ CH32V203 [RISC-V] ] を選択。 ・右横の項目で [ CH32V203K8T6 ] を選択。 ・右下の [ Finish] ボタンをクリックして設定が完了する。 ![]() b.プログラミング ・MounRiverStudio の 左側に「EXPLORER」と言う項目がありその下に「User」、「main.c」と言う項目をダブルクリックする。 ・MounRiverStudio の 右側でプログラムを書く。下図の例はPA0端子で電圧を 入り/切り するもの。
![]() |
(4)プログラムの書き込み
|
プログラムが完了すれば、次は書き込みとなる。 a.[ Rebuild project ]をクリックして ![]() 下欄の「Output」 メッセージでエラーが無いことを確認する。 ![]() b.[ Download ] ボタンをクリックして ![]() 下欄の「Output」 メッセージでエラーが無いことを確認する。 ![]() 右写真の様にLEDが点滅を始める。 |
使用した回路
下の写真は1秒の待ちをプログラムに追加してLEDの点滅で動作を判るようにした。
|
(5)プログラムの格納場所
| ホームディレクトリーに『mounriver-studio-projects』のディレクトリーが作成され、その中にプロジェクト名でディレクトリーが作成され、各フィルが格納される。 |
(6)Terminal の設定
MounRiverStudioの下欄に[Terminal]機能を付加できる。
・下欄にTerminalの付加方法
上のメニュー[Window]➡[Open view]で [view]から[Terminal]を選択すると下欄に表示されます。

・Terminalの設定

上のメニュー[Window]➡[Preference]で
Setringsが表示され [User]➡[Extensions]➡
[Serial Terminal]➡[Serial port:Configurations]で
例えば
Baud rate 115200
No parity bit n(n|e|o), default is n
Data bits 8(5|6|7|8)bit, default is 8
Stop bit 1(1|1.5|2)bit, default is 1
なら
なおWCH-LinkEの RXとTXを
・下欄にTerminalの付加方法
上のメニュー[Window]➡[Open view]で [view]から[Terminal]を選択すると下欄に表示されます。

・Terminalの設定

上のメニュー[Window]➡[Preference]で
Setringsが表示され [User]➡[Extensions]➡
[Serial Terminal]➡[Serial port:Configurations]で
例えば
Baud rate 115200
No parity bit n(n|e|o), default is n
Data bits 8(5|6|7|8)bit, default is 8
Stop bit 1(1|1.5|2)bit, default is 1
なら
115200n81
と入力して [OK] で変更になる。なおWCH-LinkEの RXとTXを
モニターするMCUに接続すること。
2. MounRiver Studio関数
Version:2.2.0のものを記載する。
MounRiver Studioで使用されているGPIO_InitTのような関数は、ペリフェラルライブラリ関数(Peripheral Library function)と呼ばれる。
詳細
ペリフェラル(Peripheral): マイコン(MCU)が持つ、CPUの周辺にある機能ブロックのことです。GPIO(汎用入出力)やタイマー、UARTなどがこれに該当する。
ペリフェラルライブラリ(Peripheral Library): 各ペリフェラルを制御するための関数群をまとめたライブラリだ。
レジスタを直接操作するのではなく、関数を呼び出すだけで設定ができるため、開発を効率化し、可読性を高めることができる。
GPIO_Init: GPIO(汎用入出力)をInit(初期化)するための関数です。これにより、ピンのモード(入力、出力など)、速度、プルアップ・プルダウン抵抗といった設定を行う。
MounRiver Studioは、RISC-Vマイコンを扱うための開発環境であり、メーカーが提供するペリフェラルライブラリを利用してプログラミングを行うのが一般的だ。
端末から開発しているプログラムを格納しているディレクトリー内で ch32v****.h を検索する。
上記コマンドを実行すると、下記一覧表のヘッダーファイルが見れる。
※ただし、コメント以降は今回説明様に追加した。
詳細
ペリフェラル(Peripheral): マイコン(MCU)が持つ、CPUの周辺にある機能ブロックのことです。GPIO(汎用入出力)やタイマー、UARTなどがこれに該当する。
ペリフェラルライブラリ(Peripheral Library): 各ペリフェラルを制御するための関数群をまとめたライブラリだ。
レジスタを直接操作するのではなく、関数を呼び出すだけで設定ができるため、開発を効率化し、可読性を高めることができる。
GPIO_Init: GPIO(汎用入出力)をInit(初期化)するための関数です。これにより、ピンのモード(入力、出力など)、速度、プルアップ・プルダウン抵抗といった設定を行う。
MounRiver Studioは、RISC-Vマイコンを扱うための開発環境であり、メーカーが提供するペリフェラルライブラリを利用してプログラミングを行うのが一般的だ。
端末から開発しているプログラムを格納しているディレクトリー内で ch32v****.h を検索する。
hobbylab@GZBOX:~/mounriver-studio-projects/CH32V203C8T6_GPIO_ex$ ls
CH32V203C8T6_GPIO_ex.launch Core Ld Startup obj
CH32V203C8T6_GPIO_ex.wvproj Debug Peripheral User
hobbylab@GZBOX:~/mounriver-studio-projects/CH32V203C8T6_GPIO_ex$ find -name "ch32v*.h"
CH32V203C8T6_GPIO_ex.launch Core Ld Startup obj
CH32V203C8T6_GPIO_ex.wvproj Debug Peripheral User
hobbylab@GZBOX:~/mounriver-studio-projects/CH32V203C8T6_GPIO_ex$ find -name "ch32v*.h"
上記コマンドを実行すると、下記一覧表のヘッダーファイルが見れる。
※ただし、コメント以降は今回説明様に追加した。
./User/ch32v20x_it.h
./User/ch32v20x_conf.h
./Peripheral/inc/ch32v20x.h
./Peripheral/inc/ch32v20x_adc.h
./Peripheral/inc/ch32v20x_bkp.h
./Peripheral/inc/ch32v20x_can.h
./Peripheral/inc/ch32v20x_crc.h
./Peripheral/inc/ch32v20x_dbgmcu.h
./Peripheral/inc/ch32v20x_dma.h
./Peripheral/inc/ch32v20x_exti.h
./Peripheral/inc/ch32v20x_flash.h
./Peripheral/inc/ch32v20x_gpio.h
./Peripheral/inc/ch32v20x_i2c.h
./Peripheral/inc/ch32v20x_iwdg.h
./Peripheral/inc/ch32v20x_misc.h //NVIC
./Peripheral/inc/ch32v20x_opa.h
./Peripheral/inc/ch32v20x_pwr.h
./Peripheral/inc/ch32v20x_rcc.h
./Peripheral/inc/ch32v20x_rtc.h
./Peripheral/inc/ch32v20x_spi.h
./Peripheral/inc/ch32v20x_tim.h
./Peripheral/inc/ch32v20x_usart.h
./Peripheral/inc/ch32v20x_usb.h
./Peripheral/inc/ch32v20x_wwdg.h
./User/ch32v20x_conf.h
./Peripheral/inc/ch32v20x.h
./Peripheral/inc/ch32v20x_adc.h
./Peripheral/inc/ch32v20x_bkp.h
./Peripheral/inc/ch32v20x_can.h
./Peripheral/inc/ch32v20x_crc.h
./Peripheral/inc/ch32v20x_dbgmcu.h
./Peripheral/inc/ch32v20x_dma.h
./Peripheral/inc/ch32v20x_exti.h
./Peripheral/inc/ch32v20x_flash.h
./Peripheral/inc/ch32v20x_gpio.h
./Peripheral/inc/ch32v20x_i2c.h
./Peripheral/inc/ch32v20x_iwdg.h
./Peripheral/inc/ch32v20x_misc.h //NVIC
./Peripheral/inc/ch32v20x_opa.h
./Peripheral/inc/ch32v20x_pwr.h
./Peripheral/inc/ch32v20x_rcc.h
./Peripheral/inc/ch32v20x_rtc.h
./Peripheral/inc/ch32v20x_spi.h
./Peripheral/inc/ch32v20x_tim.h
./Peripheral/inc/ch32v20x_usart.h
./Peripheral/inc/ch32v20x_usb.h
./Peripheral/inc/ch32v20x_wwdg.h










下の写真は1秒の待ちをプログラムに追加してLEDの点滅で動作を判るようにした。