RISC-Vでの50円マイコンCH32V003F4P6を動かすことが出来たので、

すこし内容を理解するためサンプルのソースコードを読んでいきます。

 

 

 

まずはクロック設定を理解していきます。これが理解できないと周波数に関する設定がおかしくなるからです。CH32V003F4P6では3つのクロックを使う事が出来ます。

HSE:外部のクロック、HSI:内部のクロック、 LSI:内部の低速クロックです。

今回ダウンロードしたサンプルは評価ボードをベースにしているので、外部クロックがあります。24MHzの発振器がついています。

 

今回の実験では、外部に発振器はつけていません。たぶん、正しくない動作をしていると思われます。

 

 

 

 

まずは、関数SystemInitを読んでいます。

 

A→ ❶HSIを有効化

B→ ❷外部クロック出力(MCO)をSystemCLOCKを設定

      ❸PLLのソースをHSEに設定

      ❹ADCPRE(ADCのプリスケーラ)を0に

      ❺AHBのプリスケーラをOFF

      ❻SystemClOCKをHISに設定

C→ ❼PLL OFF

      ❽HSEをOFFに

D→ ❾HSEのバイパスなし

E→ ❿PLLのソースをHISに設定

 

なので、以下の場所の設定をしているようです。

 

#defineで指定したクロック設定を実施するようになっています。

サンプルプロジェクトは、以下のようにHSEの48MHz設定です。

 

ここまで読むと、このプロジェクトは正しく動いていないと思われます。

そのため実際に確認することにしました。HSEの48MHz設定をする関数SetSysClockTo_48MHz_HSEをみるとHSE設定がFailした場合がELSEケースに記載されています。ここに記述を追加してブレークポイントを設定して実行してみます。

 

実行してみると、想定通り、止まりました。

 

正しい設定をしましょう。

内部のHSIを48MHzで動作させます。

 

これでビルドをして問題がなければOKです。