このブログは、サーバー代など、運営費のため広告やアフェリエイトがあります。
大変申し訳ありませんが、ご理解よろしくお願いします。

このブログは、サーバー代など、運営費のため広告やアフェリエイトがあります。
大変申し訳ありませんが、ご理解よろしくお願いします。

CH32V203マイコンのPA11/12 PD0/1が使えない問題を解決する

スポンサーリンク

こんにちは。Yukiです。

今回はCH32V203マイコンを使ったときに、PA11/12とPD0/1が使えない問題を解決したいと思います。

何が起きた

CH32V203マイコンは何度も使ってるし、大丈夫っしょということで適当に基板設計して発注した結果、動きませんでした…。

解決方法

PD0/PD1はOSC_IN/OSC_OUTに割当されているため、AFIOレジスタにてGPIOに割当する必要があります。

RCC->APB2PCENR |= RCC_AFIOEN; //AFIO有効

AFIO->PCFR1 |= AFIO_PCFR1_PD01_REMAP; //PD0/PD1をGPIOとして使う

なんとこれだけでPD0/PD1が使えるようになります!!!!

次に、PA13/14はSWDIOとSWCLKに関係するため、AFIOレジスタにてGPIOに割当する必要があります。ただし、割当した瞬間にWCH-LinkEで書き込みできなくなるデメリットもあるので注意してください。

    //SWDを無効にしてGPIOを有効にする
    AFIO->PCFR1 &= ~AFIO_PCFR1_SWJ_CFG_0;
    AFIO->PCFR1 &= ~AFIO_PCFR1_SWJ_CFG_1;
    AFIO->PCFR1 |= AFIO_PCFR1_SWJ_CFG_2;

再度書き込みする場合は、WCH-LinkUtilityにてTarget→Clear All Code Flash-By Power offを選択します。(メモリの中身が削除されて書き込めるようになります)

ちなみにですが、CH32V203のUSB機能を利用して書き込む場合には、SWD機能は必要ないため、特に被害を受けません。(確認済み)

PB8は?

PB8はBOOTピンと共用ですが、データシートにある通り、このピンは出力専用です。

もし入力で使いたい場合があったとしても、プログラムなどでは対処できません。諦めましょう。

参考になったら、コーヒー1杯奢ってくれるとうれしいです
Buy Me A Coffee
未分類
スポンサーリンク
シェアする
denshi1996をフォローする
スポンサーリンク

コメント

タイトルとURLをコピーしました