忘備録-備忘録

技術的な備忘録

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

RX62NでFreeRTOSを動かす

2015-11-27 22:05:41 | RX62N
RX62N(インターフェス2011年5月号付録)でFreeRTOSを動かしました。環境はe2 studio, renesas RXCコンパイラです。
ここにプロジェクトをエクスポートしたものを置いておきます。
ファイル構成は次の通りです。
”FreeRTOS”以下のフォルダに必要なファイルをまとめました。
”FreeRTOS/renesas”以下にウィザードが自動生成するファイルをまとめておいてあります。
”port.c”にエラーが表示されているのはインラインアセンブラを使用しているためです。



フォルダを閉じるとユーザープログラムのみでシンプルになります。



プロジェクト作成時にはできるだけ自動生成するファイルを省き、それでも作成されるものは”FreeRTOS/renesas”のファイルと被るので削除します。



ここに”FreeRTOS”フォルダ以下のファイルをドラッグアンドドロップでコピーすればFreeRTOSのインストールは終了です。



4つのタスクが違う間隔で起動と待期を繰り返しながらLEDを点滅させるプログラムは次のようになります。

  1. #include <stdio.h>
  2. #include "FreeRTOS/renesas/iodefine.h"
  3. /* Kernel includes. */
  4. #include "FreeRTOS/FreeRTOS.h"
  5. #include "FreeRTOS/task.h"
  6. #include "FreeRTOS/queue.h"
  7. void vTask1(void *pvParameters)
  8. {
  9.     while(1) {
  10.         PORTD.DR.BIT.B1 = ~PORTD.DR.BIT.B1;
  11.         vTaskDelay(100/portTICK_PERIOD_MS);
  12.     }
  13. }
  14. void vTask2(void *pvParameters)
  15. {
  16.     while(1) {
  17.         PORTD.DR.BIT.B2 = ~PORTD.DR.BIT.B2;
  18.         vTaskDelay(200/portTICK_PERIOD_MS);
  19.     }
  20. }
  21. void vTask3(void *pvParameters)
  22. {
  23.     while(1) {
  24.         PORTD.DR.BIT.B3 = ~PORTD.DR.BIT.B3;
  25.         vTaskDelay(300/portTICK_PERIOD_MS);
  26.     }
  27. }
  28. void vTask4(void *pvParameters)
  29. {
  30.     while(1) {
  31.         PORTD.DR.BIT.B0 = ~PORTD.DR.BIT.B0;
  32.         vTaskDelay(400/portTICK_PERIOD_MS);
  33.     }
  34. }
  35. void main(void)
  36. {
  37.     /* Renesas provided CPU configuration routine. The clocks are configured in
  38.     here. */
  39.     /* Turn all LEDs off. */
  40.     PORTD.DDR.BYTE = 0xFF;    //ポートC出力
  41.     PORTD.DR.BYTE = 0xFF;    //初期値
  42.     xTaskCreate(vTask1,"Task1",100,NULL,1,NULL);
  43.     xTaskCreate(vTask2,"Task2",100,NULL,1,NULL);
  44.     xTaskCreate(vTask3,"Task3",100,NULL,1,NULL);
  45.     xTaskCreate(vTask4,"Task4",100,NULL,1,NULL);
  46.     /* Create the queue. */
  47.     vTaskStartScheduler();
  48.     /* If all is well the next line of code will not be reached as the scheduler
  49.     will be    running. If the next line is reached then it is likely that there was
  50.     insufficient heap available for the idle task to be created. */
  51.     for( ;; );
  52. }
『その他』 ジャンルのランキング
コメント (2)   この記事についてブログを書く
« RX62Nの12bitAD変換を使うその2 | トップ | binbono arduino互換機を作る »
最近の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
CS+で作りました。 (すがわら)
2017-08-19 17:08:48
こんにちは、このサイトに掲載されているソースを用いて、RX621でCS+に移植させていただきました。公開させていただきたいと思うのですが、いかがでしょうか
Re:CS+で作りました。 (lm324)
2017-08-20 08:28:11
自由に公開してください。
大勢の人が使えば、いろいろな知恵が集まって良いと思います。

コメントを投稿

RX62N」カテゴリの最新記事

関連するみんなの記事