PIC32MX LED 点灯させたいのだがXC16, XC8のようなdelay() 関数がない。
(XC16, XC8のdelay() 関数は以下を参照してください)
PIC32MX のdelay() 関数の例は以下の通りだ。※1 ※2
まずはdelay() 関数を使うための記述。

次にmain()関数とdelay() 関数の内容。

まずはdelay() 関数を使うための記述。

// delay関数用
#define CCLK (8000000L) // system clock
#define PBCLK (CCLK / 2) // peripheral bus clock
#define SAMPLE_RATE 5000
#define CCLK_US (PBCLK / 1000 / 1000) // used for micro second delay
#define CCLK_MS (PBCLK / 1000) // used for milli second delay
次にmain()関数とdelay() 関数の内容。

void __delay_us(unsigned int d)
{
unsigned int delayCount, startTime;
startTime = _CP0_GET_COUNT();
delayCount = d * CCLK_US;
while((_CP0_GET_COUNT() - startTime) < delayCount);
}
void __delay_ms(unsigned int d)
{
unsigned int delayCount, startTime;
startTime = _CP0_GET_COUNT();
delayCount = d * CCLK_MS;
while((_CP0_GET_COUNT() - startTime) < delayCount);
}
-----------------------------------
※1 delay() 関数の情報は以下
PIC32 delay function calculation
組み込みエンジニア向け MPLAB® XC32 ユーザガイド
2020/06/19 追記
※2 MPLAB Harmony v3 (15) CORE TIMER, CORETIMER_DelayMs も参考にしください。
コメント