300mSec I/O Port-bit7 -...

20
1 CoIDE 用 tri_S_FreeRTOS の説明 V002 2014/04/04 無料で提供されている リアルタイム OS FreeRTOS を使用して、「飛石伝ひ CPU 基板」の UART 2 の送受信により I/O Port の bit を ON/OFF するプログラムです。 FreeRTOS は http://www.freertos.org/ のサイトで提供されています。さまざまな CPU に対応しており、実績があり、 動作も安定しています。 tri_S_FreeRTOS プロジェクトサンプルでは FreeRTOS を組み込んで、タスクを起動させる形でプログラムを動作させて みました。 コードサイズ制限なしで Free の開発ツール CoIDE で作成したプロジェクトです。 プログラムの開始番地は 0x08010000 です。デバッグが可能です。 PC アプリケーションの Access_SerialPort を使用して UART(非同期シリアル通信)送受信の試験を行うことができます。 目次 1. FreeRTOS について ........................................................................................................................................................................................................................................ 2 1.1. CoIDE 用 tri_S_FreeRTOS プロジェクトで使用するタスク ................................................................................................................................................. 2 2. UART に使用する信号.................................................................................................................................................................................................................................. 3 3. I/O bit 出力に使用する信号...................................................................................................................................................................................................................... 5 4. プログラム実行時の動作と確認............................................................................................................................................................................................................... 6 4.1. 実行時の動作 ........................................................................................................................................................................................................................................ 6 4.2. 動作確認.................................................................................................................................................................................................................................................. 6 1) Access_SerialPort アプリケーションの起動画面.................................................................................................................................................................... 6 2) COM ポートと通信速度の選択 ......................................................................................................................................................................................................... 7 3) 送信データのエコーバック................................................................................................................................................................................................................. 9 4) I/O Port の bit ON/OFF ....................................................................................................................................................................................................................10 5. プロジェクトの構成.........................................................................................................................................................................................................................................11 5.1. 独自に追加したソースフォルダ.................................................................................................................................................................................................11 5.2. ルートのファイル................................................................................................................................................................................................................................12 6. 主なモジュールの説明..............................................................................................................................................................................................................................13 6.1. main.c........................................................................................................................................................................................................................................................13 6.2. HandleTimer2 ......................................................................................................................................................................................................................................15 6.3. HandleUART.........................................................................................................................................................................................................................................16 6.4. UserPrograms.....................................................................................................................................................................................................................................17 6.5. CommunicateHOST..........................................................................................................................................................................................................................18

Transcript of 300mSec I/O Port-bit7 -...

Page 1: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

1

CoIDE用 tri_S_FreeRTOSの説明 V002 2014/04/04

無料で提供されている リアルタイムOS FreeRTOS を使用して、「飛石伝ひCPU基板」の UART 2の送受信により

I/O Portの bitをON/OFFするプログラムです。

FreeRTOS は http://www.freertos.org/ のサイトで提供されています。さまざまなCPUに対応しており、実績があり、

動作も安定しています。

tri_S_FreeRTOSプロジェクトサンプルでは FreeRTOSを組み込んで、タスクを起動させる形でプログラムを動作させて

みました。

コードサイズ制限なしで Freeの開発ツール CoIDE で作成したプロジェクトです。

プログラムの開始番地は 0x08010000 です。デバッグが可能です。

PCアプリケーションのAccess_SerialPortを使用して UART(非同期シリアル通信)送受信の試験を行うことができます。

目次

1. FreeRTOSについて ........................................................................................................................................................................................................................................ 2

1.1. CoIDE用 tri_S_FreeRTOSプロジェクトで使用するタスク ................................................................................................................................................. 2

2. UARTに使用する信号 .................................................................................................................................................................................................................................. 3

3. I/O bit出力に使用する信号 ...................................................................................................................................................................................................................... 5

4. プログラム実行時の動作と確認 ............................................................................................................................................................................................................... 6

4.1. 実行時の動作 ........................................................................................................................................................................................................................................ 6

4.2. 動作確認 .................................................................................................................................................................................................................................................. 6

1) Access_SerialPortアプリケーションの起動画面 .................................................................................................................................................................... 6

2) COMポートと通信速度の選択 ......................................................................................................................................................................................................... 7

3) 送信データのエコーバック ................................................................................................................................................................................................................. 9

4) I/O Portの bit ON/OFF.................................................................................................................................................................................................................... 10

5. プロジェクトの構成 ......................................................................................................................................................................................................................................... 11

5.1. 独自に追加したソースフォルダ ................................................................................................................................................................................................. 11

5.2. ルートのファイル ................................................................................................................................................................................................................................ 12

6. 主なモジュールの説明 .............................................................................................................................................................................................................................. 13

6.1. main.c ........................................................................................................................................................................................................................................................ 13

6.2. HandleTimer2 ...................................................................................................................................................................................................................................... 15

6.3. HandleUART ......................................................................................................................................................................................................................................... 16

6.4. UserPrograms ..................................................................................................................................................................................................................................... 17

6.5. CommunicateHOST .......................................................................................................................................................................................................................... 18

Page 2: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

2

1. FreeRTOSについて

FreeRTOSは無料で提供されている、リアルタイムOSです。

FreeRTOS は http://www.freertos.org/ のサイトで提供されています。さまざまなCPUに対応しており、実績があり、

動作も安定しています。

リアルタイムOSはタスクの起動と待ち(一時停止)を行うことができ、それを使用してマルチタスク処理を実現できます。

1.1. CoIDE用 tri_S_FreeRTOSプロジェクトで使用するタスク

tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

Status LEDの点滅処理を起動してみます。

使用するタスクは次の3個です。

1) I/O Port-bit7のON/OFF

300mSec間隔で I/O Port-bit7をON/OFFします。LEDを接続すれば LEDが点滅します。

このタスクは一時停止(Suspend)しないで実行し続けます。

2) UART2の受信データの処理

受信割り込みでデータを受信したとき、受信終了タイマを起動して、タイマ割り込みで受信終了タイマの値が 0 になった時

受信終了とします。受信終了を検知したときに受信データ処理のタスクを起動します。

処理が終了したときタスクを一時停止(Suspend)状態にします。次に起動されるまで実行されません。

3) Status LEDの点滅処理の起動

タイマ割り込み内でStatus LEDの点灯/消灯タイマの値が 0 になった時、Status LEDの点滅処理を起動します。

処理が終了したときタスクを一時停止(Suspend)状態にします。次に起動されるまで実行されません。

Page 3: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

3

2. UARTに使用する信号

「飛石伝ひCPU基板」の UART(非同期シリアル通信)に使用する信号と接続相手との接続は以下の通りです。

1) UART2 接続信号表

「飛石伝ひCPU基板」の UART信号表

番号 CPU機能名 CPU信号名 基板コネクタピン番号 接続相手の信号名

1 USART2_TX PA2 P2-40 --- > RxD

2 USART2_RX PA3 P2-39 < --- TxD

3 GND GND P1-1, P1-2, P1-5

P1-17, P1-49, P1-50

P2-1, P2-2, P2-50

< --- > GND

2) RS232C ドライバ接続例

Page 4: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

4

3) 「飛石伝ひ I/F基板」を使用する場合

「飛石伝ひ I/F基板」はRS232C ドライバを搭載しています。

コネクタ P9-UART1を使用して PCなどとRS232C接続することができます。

(P9-UART1にCPUの USART2の信号が接続されています。まぎらわしくて、すみません。)

「飛石伝ひ I/F基板」の UART信号表

飛石伝ひ I/F基板

P9 ピン番号

信号名 CPU機能名 CPU信号名 飛石伝ひCPU基板

コネクタピン番号

接続相手の信号名

1 TxD USART2_TX PA2 P2-40 --- > RxD

2 RxD USART2_RX PA3 P2-39 < --- TxD

3 GND GND GND P1-1, P1-2, P1-5

P1-17, P1-49, P1-50

P2-1, P2-2, P2-50

< --- > GND

DSUB-9Sとの接続

飛石伝ひ I/F基板

P9 ピン番号

信号名 DSUB-9S 備考

1 TxD 2

2 RxD 3

3 GND 5

DSUB-9Sには上記の3本の信号以外は接続されていません。

PCとの接続は以下のようになります。

飛石伝ひ I/F基板 P9 D

SUB-9S

PC

RS232C変換ケーブル

飛石伝ひCPU基板

P3 P4

Page 5: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

5

3. I/O bit出力に使用する信号

Command文字列を送信することにより、I/O bitの ON/OFF を行えます。

Command文字列以外のデータを送信した場合は、エコーバックします。

「飛石伝ひCPU基板」の I/O bit出力に使用する信号は以下の I/O Port0 bit0 – 7, I/ O Port1 bit0 - 7の 16本です。

1) I/O Port0信号表

飛石伝ひ I/F基板

P3 ピン番号

信号名 CPU機能名 CPU信号名 飛石伝ひCPU基板

コネクタピン番号

1 I/O_Port0-bit0 I/O PD0 P1-31

2 I/O_Port0-bit1 I/O PD1 P1-30

3 I/O_Port0-bit2 I/O PE14 P2-22

4 I/O_Port0-bit3 I/O PD3 P1-28

5 I/O_Port0-bit4 I/O PD4 P1-27

6 I/O_Port0-bit5 I/O PD5 P1-26

7 I/O_Port0-bit6 I/O PD6 P1-25

8 I/O_Port0-bit7 I/O PD7 P1-24

9 +3.3V ----- ----- -----

10 GND GND GND P1-1, P1-2, P1-5

P1-17, P1-49, P1-50

P2-1, P2-2, P2-50

2) I/O Port1信号表

飛石伝ひ I/F基板

P4 ピン番号

信号名 CPU機能名 CPU信号名 飛石伝ひCPU基板

コネクタピン番号

1 I/O_Port1-bit0 I/O PD8 P2-14

2 I/O_Port1-bit1 I/O PD9 P2-13

3 I/O_Port1-bit2 I/O PD10 P2-12

4 I/O_Port1-bit3 I/O PD11 P2-11

5 I/O_Port1-bit4 I/O PD12 P2-10

6 I/O_Port1-bit5 I/O PD13 P2-9

7 I/O_Port1-bit6 I/O PD14 P2-8

8 I/O_Port1-bit7 I/O PD15 P2-7

9 +3.3V ----- ----- -----

10 GND GND GND P1-1, P1-2, P1-5

P1-17, P1-49, P1-50

P2-1, P2-2, P2-50

Page 6: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

6

4. プログラム実行時の動作と確認

4.1. 実行時の動作

1) プログラムを実行すると基板上の LED1(緑)が 1秒点灯、2秒消灯 で点滅します。

2) I/O Port1-bit7が300mSec間隔でON/OFFします。

3) UART2ポートで I/O Port bit ON/OFFコマンド以外のデータを受信するとエコーバックします。

4) UART2ポートで I/O Port bit ON/OFFコマンドを受信すると、指定された bitのON/OFFを行います。

4.2. 動作確認

UART(非同期シリアル通信)のツール Access_SerialPortアプリケーションを使用して、CPU基板の送受信の確認、

および コマンド文字列を送信して I/O Portの bitのON/OFFを行うことができます。

1) Access_SerialPortアプリケーションの起動画面

まず、PCと「飛石伝ひCPU基板」とをRS232Cインターフェースで接続してください。

Access_SerialPortアプリケーションを起動すると以下のダイアログが表示されます。

次ページに続く

Page 7: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

7

2) COMポートと通信速度の選択

COM選択のComboBoxでCOMを選択します。

確認のメッセージが表示されるので、よい場合は [はい(Y)] ボタンをクリックします。

次ページに続く

Page 8: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

8

この例では、”COM4に設定しました。” とメッセージが表示されています。

通信速度は 9600bpsでよいのでこのままにしておきます。

次ページに続く

Page 9: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

9

3) 送信データのエコーバック

送信データのTextBoxにASCII文字列を入力して、[送信] ボタンをクリックすると、CPU基板にデータが送信されます。

CPU基板はデータを受信して、そのデータをそのまま PCに送信します。

PCが受信したデータは受信データの部分に表示されます。

上記の例では、送信データに “How are you?” と入力して [送信] ボタンをクリックした結果、エコーバックのデータが

受信データの欄に表示されています。

次ページに続く

Page 10: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

10

4) I/O Portの bit ON/OFF

I/O Portの bit ON/OFFのコマンドは以下のようになります。

a) bit ONの場合

“Portx bitx ON”

b) bit OFFの場合

“Portx bitx OFF”

Portx は Port0 または Port1 の2通りです。

bitxは bit0 ~ bit7 の8通りです。

合計16bitをON/OFFすることができます。

注: tri_S_FreeRTOSプロジェクトでは I/O Port1-bit7 を300mSec間隔でON/OFFしているので、I/O Port1-bit7 に対して

bit ON/OFFコマンドを送信しても、制御できません。

上記の例では、”Port0 bit0 ON” を入力して [送信] ボタンをクリックした結果、CPU基板は I/O_Port0-bit0をHighに

して、”OK : Port0 bit0 ON” を応答データとして送信しました。

I/O_Port0-bit0を Lowにしたい場合は、”Port0 bit0 OFF” を送信します。

Page 11: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

11

5. プロジェクトの構成

CoIDEで作成したプロジェクト tri_S_FreeRTOSを開いた状態を以下に示します。

5.1. 独自に追加したソースフォルダ

独自に追加したソースフォルダについて簡単に説明します。

1) CommonModules

共通処理を記述しています。

2) CommunicateHOST

UARTの通信処理を記述しています。I/O Port bit出力のコマンドを受信して処理を行います。

3) FreeRTOS_V753

リアルタイムOSである FreeRTOSのプログラムソースです。

4) Handles

Peripheralの設定などを行っています。

a) HandleTimer2.h HandleTimer2.c

タイマ割り込みを使用するために、タイマの初期設定を記述しています。

b) HandleUART.h HandleUART.c

UARTの初期設定と送受信の処理を記述しています。

5) UserPrograms

a) Status LED に使用している I/O の初期設定と点滅処理を記述しています。

b) I/O Port0 bit0 ~ bit7 と I/O Port1 bit0 ~ bit7の初期設定と、それぞれの bitのON/OFF処理を記述しています。

Page 12: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

12

5.2. ルートのファイル

ルートの中の特に重要なファイルについて説明します。

1) main.c

mainモジュールが記述されています。プログラムはここから開始します。

クロックと I/Oの初期化を行った後、リアルタイムOSのタスクの登録と起動を行っています。

2) stm32f4xx_it.c

割り込み処理を記述しています。

このプロジェクトでは、Timer2割り込みと UART2の割り込み処理を記述しています。

Page 13: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

13

6. 主なモジュールの説明

6.1. main.c

1) mainモジュール

クロックと I/Oを初期化した後、リアルタイムOSのタスクの登録して、タスクを起動します。

int main(void);

a) リアルタイムOSのタスクの登録

FreeRTOSの使い方は、簡単です。この例に示すように、タスクを登録して起動すれば、タスクに記述された処理を

実行してくれます。

この例では、TaskBとTaskCは一時停止(Suspend)させて、事象が発生したとき割り込み内から起動していますが、

一時停止(Suspend)しない場合は、1mSecごとにタスクを切り替えて平行に動作してくれます。

予備のTaskDとTaskEに処理を書いて実行させてみてください。

//--------------------------------------------------------------------------------

// RTOSのタスクの登録

//--------------------------------------------------------------------------------

//TaskA : I/O Port1-bit7 ON/OFF

//TaskB : HOST通信処理

//TaskC : Status LED点滅

//TaskD : suspend

//TaskE : suspend

//--------------------------------------------------------------------------------

xTaskCreate(prvTaskA, (signed portCHAR *) "TaskA", 256, NULL, 1, &xHandleA);

xTaskCreate(prvTaskB, (signed portCHAR *) "TaskB", 256, NULL, 1, &xHandleB);

xTaskCreate(prvTaskC, (signed portCHAR *) "TaskC", 256, NULL, 1, &xHandleC);

xTaskCreate(prvTaskD, (signed portCHAR *) "TaskD", 256, NULL, 1, &xHandleD);

xTaskCreate(prvTaskE, (signed portCHAR *) "TaskE", 256, NULL, 1, &xHandleE);

i) TaskA : I/O Port-bit7のON/OFF

300mSec間隔で I/O Port-bit7をON/OFFします。LEDを接続すれば LEDが点滅します。

このタスクは一時停止(Suspend)しないで実行し続けます。

ii) TaskB : UART2の受信データの処理

受信割り込みでデータを受信したとき、受信終了タイマを起動して、タイマ割り込みで受信終了タイマの値が 0 になった時

受信終了とします。受信終了を検知したときに受信データ処理のタスクを起動します。

処理が終了したときタスクを一時停止(Suspend)状態にします。次に起動されるまで実行されません。

iii) TaskC : Status LEDの点滅処理の起動

タイマ割り込み内でStatus LEDの点灯/消灯タイマの値が 0 になった時、Status LEDの点滅処理を起動します。

処理が終了したときタスクを一時停止(Suspend)状態にします。次に起動されるまで実行されません。

iv) TaskD : 登録のみです。 Suspend状態にしています。

v) TaskE : 登録のみです。 Suspend状態にしています。

Page 14: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

14

b) タスクの起動

//----------------------------

// Start the scheduler. : RTOSのタスクの起動

//----------------------------

vTaskStartScheduler();

2) 使用するクロックの初期化

void RCC_Configuration(void);

3) I/Oの初期化

void Init_GPIOs(void);

4) Peripheralの初期化 : 使用する I/O出力ポートとTimer2の初期化を行っています。

//-------------------------------

// 各Peripheralの初期化

//-------------------------------

void InitializeHandler(void);

5) TaskA

//---------------------------------------------

// RTOS : Task A : I/O Port1-bit7 ON/OFF

//---------------------------------------------

void prvTaskA(void *pvParameters);

6) TaskB

//---------------------------------------------

// RTOS : Task B : HOST通信処理

//---------------------------------------------

void prvTaskB(void *pvParameters);

7) TaskC

//---------------------------------------------

// RTOS : Task C : Status LED点滅

//---------------------------------------------

void prvTaskC(void *pvParameters);

8) TaskD : 予備

9) TaskE : 予備

Page 15: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

15

6.2. HandleTimer2

1) Timer2初期化

//------------------------------------------------------------------------------

//Timer2初期化

//------------------------------------------------------------------------------

//引数 :

// uint16_t uintTIM_Pulse1 : Timer2 CH1 インターバル

// uint16_t uintTIM_Pulse2 : Timer2 CH2 インターバル

// uint16_t uintTIM_Pulse3 : Timer2 CH3 インターバル

// uint16_t uintTIM_Pulse4 : Timer2 CH4 インターバル

//------------------------------------------------------------------------------

void InitializeTimer2(uint16_t uintTIM_Pulse1, uint16_t uintTIM_Pulse2,

uint16_t uintTIM_Pulse3, uint16_t uintTIM_Pulse4);

2) Timer2割り込み禁止

//Timer2割り込み禁止

void DisableIrqTim2(void);

3) Timer2割り込み許可

//Timer2割り込み許可

void EnableIrqTim2(void);

Page 16: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

16

6.3. HandleUART

1) UARTの初期化

//UART2初期化

void InitializeUART2(uint32_t ulngBaudRate);

2) UART送信

設定された送信データを送信します。

//------------------------------------------------------------------

//UART2 送信処理

//------------------------------------------------------------------

//引数 :

// uint16_t uintLength : 送信データ数

// uint8_t *puchrData : 送信データのポインタ

//戻り値 :

// 0 : 送信終了

// 1 : エラー

//------------------------------------------------------------------

void SendUART2(uint16_t uintLength, uint8_t *puchrData);

3) UART受信

受信の有無をチェックして、受信があったら受信データを受信Bufferに格納して受信データ数を返します。

//------------------------------------------------------------------

//UART2 受信処理

//------------------------------------------------------------------

//引数 :

// uint8_t *puchrReceiveBuffer : 受信データを格納するBufferのポインタ

//戻り値 :

// -1 : 受信なし

// 0 : 受信なし

// 1以上 : 受信byte数

//------------------------------------------------------------------

int16_t ReceiveUART2(uint8_t *puchrReceiveBuffer);

Page 17: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

17

6.4. UserPrograms

1) LEDに使用する I/Oの初期化

//Status LEDポート初期化

void InitializePortStatusLED(void);

//Action LEDポート初期化

void InitializePortActionLED(void);

2) StatusLEDの点滅

点滅一回の処理

//Status LED点滅

void BlinkStatusLED(uint16_t uintTimeON, uint16_t uintTimeOFF);

3) I/O Port0 bit0 ~ bit7 と I/O Port1 bit0 ~ bit7の初期化

//----------------------------------------------------------------

// I/O Port初期化 : Port0 bit0 - 7 and Port1 bit0 - 7

//----------------------------------------------------------------

void InitializePortIO(void);

4) I/O Port bitのON/OFF処理

//----------------------------------------------------------------

// I/O Port bit出力

//----------------------------------------------------------------

//引数 :

// uint16_t uintPort : I/O Port指定

// uint16_t uintBit : bit指定

// uint16_t uintOnOff : ON/OFF指定

//戻り値 :

// 0 : OK

// 0以外 : NG

//----------------------------------------------------------------

int16_t OutputBitIO(uint16_t uintPort, uint16_t uintBit, uint16_t uintOnOff)

Page 18: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

18

6.5. CommunicateHOST

1) UARTの初期化

//-----------------------------------------------------------

// HOST通信パラメータ初期化

//-----------------------------------------------------------

//引数 :

// uint32_t ulngBaudRate : 通信速度

//-----------------------------------------------------------

void InitializeCommunicateHOST(uint32_t ulngBaudRate);

2) HOST通信処理

受信処理を行い、受信コマンドを処理して応答データを送信します。

//------------------------------------------------------------

// HOST通信処理

//------------------------------------------------------------

//戻り値 :

// -1 : 処理中

// 0 : 終了

//------------------------------------------------------------

int16_t CommunicateHOST(void)

3) HOSTコマンドの実行

受信コマンドを判定してそれぞれの処理モジュールを呼び出します。

//------------------------------------------------------------------------------------

// HOSTコマンドを実行する。

//------------------------------------------------------------------------------------

//引数 :

// uint16_t uintReceiveLength : 受信データ数

// uint8_t *puchrReceiveData : 受信データが格納されているBufferのポインタ

// uint8_t *puchrSendData : 応答送信データを格納するBufferのポインタ

//戻り値 : 応答送信データ数

//------------------------------------------------------------------------------------

uint16_t ExecuteCommandHOST(uint16_t uintReceiveLength, uint8_t *puchrReceiveData,

uint8_t *puchrSendData);

Page 19: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

19

4) I/O Command判定と実行

コマンドを解釈して、I/O Port の bitをON/OFFします。

//------------------------------------------------------------------------------------

// I/O Command判定と実行

//------------------------------------------------------------------------------------

//引数 :

// uint16_t uintReceiveLength : 受信データ数

// uint8_t *puchrReceiveData : 受信データが格納されているBufferのポインタ

// uint8_t *puchrSendData : 応答送信データを格納するBufferのポインタ

//戻り値 : 応答送信データ数

//------------------------------------------------------------------------------------

uint16_t CheckAndExeCommandIO(uint16_t uintReceiveLength, uint8_t *puchrReceiveData,

uint8_t *puchrSendData);

5) I/O bitのON/OFF処理

指定bitのON/OFFを行い応答送信データをセットします。

//---------------------------------------------------------------------

// I/O bit ON/OFF処理

//---------------------------------------------------------------------

//引数 :

// uint16_t uintPort : I/O Port指定

// uint16_t uintBit : bit指定

// uint16_t uintOnOff : ON/OFF指定

// uint8_t *puchrSendData : 応答データを格納するBufferのポインタ

//戻り値 : 応答送信データ数

//---------------------------------------------------------------------

uint16_t ComActOutputBit(uint16_t uintPort, uint16_t uintBit, uint16_t uintOnOff,

uint8_t *puchrSendData);

Page 20: 300mSec I/O Port-bit7 - Coocantri-s.world.coocan.jp/tri_S_Project_CoIDE/Explain_tri_S...tri_S_FreeRTOSプロジェクトでは、実験として、割り込みの中から、UART2受信による受信データの処理と

20

改訂履歴

V001 2013/12/26 初版

V002 2014/04/04 誤記訂正