Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC32MXでdelayを作る。

ちょっとお試しをするときに、delayの関数は便利だ。
webをさまよって、ms単位のdelayを実現するソースを見つけたので覚書きしておく。

こんなコードで試してみたら、ちゃんとできているようだ。

pic32mx220f032b_delay_01
1つだけ問題は、SYS_CLK_FREQの値だ。
本来、Harmonyでシステムまわりを準備してあれば、SYS_CLK_FREQは手動で値を設定する必要が無いらしい。
ところが、私の環境、やり方では、明示的に設定しないとエラーになる。

追記
プロジェクト内でSYS_CLK_FREQを検索してみると、system_config.hの中に書かれていた。
ヘッダファイルの読み込まれる順番とかが良く分かっていないのだが、上の関数をmain.cの中に書いているので、main.cに、
#include <system_config.h>
を書いておけばいいと思われた。
そのようにすればエラー無くビルドできた。
なお、
#include <xc.h>
も書いておかないと、_CP0_GET_COUNTがエラーになる。
結局、Harmonyの吐いたmain.cに以下を追加すれば問題なさそうだ。
#include <system_config.h>
#include <xc.h>

追記(2017/11/21)
上の記事はHarmonyでの話だ。
MCC(MPLAB Code Configurator)ではsystem_config.hももちろんSYS_CLK_FREQも存在しない。
代わりに、mcc.hの中に#define _XTAL_FREQ 96000000ULのように書かれている。
つまり、上のコードは、MCCでは以下のようにすればいい。

HarmonyだのMCCだの、なんで2つあるのか良く分からないまま来ているが。
PIC32以外も使う以上、Harmonyだけというわけにはいかないのが現実だ。
よって、最近はPIC32でもMCCを使うようになって、Harmonyは使わなくなった。

このエントリーをはてなブックマークに追加

Posted under: Harmony Configurator, PIC32MX220F032B


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.