忙しいエンジニアのためにルネサスRAファミリを使てLチカのプログラムを5分で作ります。5分の中には、開発環境の立ち上げや動作させる時間は含みません。
ルネサスエレクトロニクス社製 EK-RA6M5評価キットとPCを準備してください。

3つのLEDが約0.5秒間隔で点滅を繰り返すプログラムを、何もないところから作ります。(サンプルプログは使わないという意味)
PCNTR1の値が1と0を繰り返すと、LEDが点滅します。
まず、0x4008 0000のアドレスにある32ビットの値をPCNTR1という名前に定義します。
volatile unsigned long PCNTR1 = ( unsigned long ) 0x40080000;
次に レジスタに値を入れます。
・点灯させる場合は *PCNTR1= 0x01c0 01c0;です。
・消灯させる場合は *PCNTR1= 0x0000 01c0;です。
これを一定時間毎に繰り返せば、点滅ができます。
点滅期間はfor文を使います。
iという整数の変数を定義し、iが0x1800000(0.5秒の実験値)よりも小さい場合に同じ処理を繰り返します。
iは1回処理を行うたびに+1(i++)します
for文の処理は何もしない命令(NOP)を繰り返し実行し、時間を稼ぎます。
NOPはアセンブリ言語ですが、「__asm(“NOP”); 」(アンダーバーは2つ)と書くとC言語の中に入れることができます。
int i;
for(i=0; i < 0x1800000; i++)
__asm("NOP");
PCNTR1= 0x01c0 01c0; とPCNTR1= 0x0000 01c0;を繰り返すプログラムを作るにはwhile文を使います
whileの条件式を1とします。中カッコで挟んだ処理を先ほど説明したfor文と PCNTR1= 0x01c001c0; とPCNTR1= 0x000001c0;の繰り返しを入れます
int i;
while (1)
{
for(i=0; i < 0x1800000; i++)
__asm("NOP");
*PCNTR1= 0x0000 01c0;
for(i=0; i < 0x1800000; i++)
__asm("NOP");
*PCNTR1= 0x01c0 01c0;
}
以上で、プログラムの各ステップができました。それらを全部繋げます。
volatile unsigned long PCNTR1 = ( unsigned long ) 0x40080000;
int i;
while (1)
{
for(i=0; i < 0x1800000; i++)
__asm("NOP");
*PCNTR1= 0x0000 01c0;
for(i=0; i < 0x1800000; i++)
__asm("NOP");
*PCNTR1= 0x01c0 01c0;
}
PCのタイピングに慣れている方なら、5分も必要ないと思います。
Webの文字列をコピペしてもらっても結構です。
あとは、ビルドして、デバッグモードに入って、実行します。
LEDの点滅が確認できましたでしょうか?
もっと詳しく勉強したい方は、
半導体技術コンテンツメディアAPSのWebinarの「基礎実習|Arm® Cortex® -M搭載 ルネサスRAファミリを使ったマイコン超入門【第4部】」( https://www.aps-web.jp/seminar/31606/ )
を観てください。動画を使って詳しく解説しています。
以上です。

