VCP Access VCP PC...

18
1 TrueSTUDIO 用 F401N_VCP の説明 V003 2014/10/01 USB の VCP(仮想 COM ポート)による非同期シリアル通信を行う NUCLEO-F401RE のプロジェクトサンプルです。 NUCLEO-F401RE は STMicroelectronics 社製の Cortex-M4 ARM CPU である STM32F401RET6 を搭載した基板です。 試用版の開発ツール Atollic TrueSTUDIO for ARM Lite で作成したプロジェクトです。 ビルド可能なプログラムのコードサイズが 32Kbyte 以内の制限があります。 プログラムの開始番地は 0x08000000 です。デバッグが可能です。 目次 1. USB の VCP(仮想 COM ポート)について ............................................................................................................................................................................................. 2 2. USB の VCP(仮想 COM ポート)による接続 ......................................................................................................................................................................................... 2 3. プログラム実行時の動作 .............................................................................................................................................................................................................................. 3 4. VCP 通信の動作確認.................................................................................................................................................................................................................................... 3 4.1. アプリケーション Access_VCP の起動画面 ............................................................................................................................................................................ 3 4.2. COM ポートの選択 ............................................................................................................................................................................................................................... 4 4.3. 送信データのエコーバック.............................................................................................................................................................................................................. 5 4.4. 基板上の LED LD2(緑)の点滅間隔の変更....................................................................................................................................................................... 6 5. プロジェクトの構成............................................................................................................................................................................................................................................ 7 5.1. プロジェクト F401N_VCP の起動画面 ........................................................................................................................................................................................ 7 5.2. 追加したソース・フォルダとファイル........................................................................................................................................................................................... 7 5.3. VCP 通信の利用.................................................................................................................................................................................................................................. 8 1) データ送信................................................................................................................................................................................................................................................. 8 2) データ受信................................................................................................................................................................................................................................................. 9 3) VCP 送受信の例..................................................................................................................................................................................................................................... 9 4) VCP 受信データの処理の例............................................................................................................................................................................................................ 9 6. 主なモジュールの説明..............................................................................................................................................................................................................................10 6.1. ソース・フォルダ src 内のファイル...........................................................................................................................................................................................10 6.2. HandleCLK.............................................................................................................................................................................................................................................11 6.3. HandleGPIO ...........................................................................................................................................................................................................................................12 6.4. HandleTIM..............................................................................................................................................................................................................................................13 6.5. UserPrograms.....................................................................................................................................................................................................................................14 6.6. Communicate_VCP ...........................................................................................................................................................................................................................16

Transcript of VCP Access VCP PC...

Page 1: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

1

TrueSTUDIO用 F401N_VCPの説明 V003 2014/10/01

USBのVCP(仮想COMポート)による非同期シリアル通信を行うNUCLEO-F401REのプロジェクトサンプルです。

NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

試用版の開発ツールAtollic TrueSTUDIO for ARM Liteで作成したプロジェクトです。

ビルド可能なプログラムのコードサイズが 32Kbyte以内の制限があります。

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

目次

1. USBのVCP(仮想COMポート)について ............................................................................................................................................................................................. 2

2. USBのVCP(仮想COMポート)による接続 ......................................................................................................................................................................................... 2

3. プログラム実行時の動作.............................................................................................................................................................................................................................. 3

4. VCP通信の動作確認 .................................................................................................................................................................................................................................... 3

4.1. アプリケーションAccess_VCPの起動画面............................................................................................................................................................................ 3

4.2. COMポートの選択 ............................................................................................................................................................................................................................... 4

4.3. 送信データのエコーバック .............................................................................................................................................................................................................. 5

4.4. 基板上の LED LD2(緑)の点滅間隔の変更 ....................................................................................................................................................................... 6

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

5.1. プロジェクト F401N_VCPの起動画面 ........................................................................................................................................................................................ 7

5.2. 追加したソース・フォルダとファイル........................................................................................................................................................................................... 7

5.3. VCP通信の利用 .................................................................................................................................................................................................................................. 8

1) データ送信 ................................................................................................................................................................................................................................................. 8

2) データ受信 ................................................................................................................................................................................................................................................. 9

3) VCP送受信の例 ..................................................................................................................................................................................................................................... 9

4) VCP受信データの処理の例 ............................................................................................................................................................................................................ 9

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

6.1. ソース・フォルダ src内のファイル ........................................................................................................................................................................................... 10

6.2. HandleCLK............................................................................................................................................................................................................................................. 11

6.3. HandleGPIO ........................................................................................................................................................................................................................................... 12

6.4. HandleTIM .............................................................................................................................................................................................................................................. 13

6.5. UserPrograms ..................................................................................................................................................................................................................................... 14

6.6. Communicate_VCP ........................................................................................................................................................................................................................... 16

Page 2: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

2

1. USBのVCP(仮想COMポート)について

USBのVCP(仮想COMポート)は USBを非同期シリアル通信として使用するための USBのドライバです。

PCにはVCP ドライバをインストールする必要があります。

USBのVCP(仮想COMポート)を使用するためのVCPドライバのインストールについては、「インストール」のページの

[ 1.「 VCP(Virtual COM Port : 仮想COMポート)ドライバ」のインストール ] の部分をご覧ください。

2. USBのVCP(仮想COMポート)による接続

USBのVCP(仮想COMポート)による、PC と NUCLEO-F401REとの接続は以下のようになります。

PC A

A

Mini B

Mini B

USBケーブル : A - MiniB : 電源供給 および ST-LINKのため

USBケーブル : A - MicroB :

VCP(仮想COMポート)による非同期シリアル通信のため

図2.

USBポート

NUCLEO-F401RE

SHEL

L

GND

ID

DP

DM

1 2 3 4 5 6 MiniBコネクタ

10Ω

10Ω

100kΩ

GND

PA11

PA12

VCP用MiniBコネクタの配線

Page 3: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

3

3. プログラム実行時の動作

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

2) データを受信するとそのデータをそのまま送信します(エコーバック)。

3) 受信データが LED点滅のコマンドであった場合、以下のように動作します。

番号 受信コマンド 動作

1 LD2 B0\0 LD2(緑) 点灯1000mSec / 消灯2000mSec

2 LD2 B1\0 LD2(緑) 点灯100mSec / 消灯100mSec

3 LD2 B2\0 LD2(緑) 点灯200mSec / 消灯200mSec

4 LD2 B3\0 LD2(緑) 点灯300mSec / 消灯300mSec

表中の “\0” は 0x00 です。

4. VCP通信の動作確認

アプリケーションAccess_VCPを使用して、データの送受信の確認、

および コマンド文字列を送信して NUCLEO-F401RE上の LED LD2(緑)の点滅間隔の変更を行います。

4.1. アプリケーションAccess_VCPの起動画面

まず、PCと NUCLEO-F401REとを USBケーブルで接続してください。

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

USBケーブルを接続していて、NUCLEO-F401RE上でプロジェクト F401N_VCPを実行している場合、

”COM(シリアルポート)を検索しました。” と表示されます。

Page 4: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

4

4.2. COMポートの選択

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

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

次ページに続く

Page 5: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

5

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

4.3. 送信データのエコーバック

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

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

このプログラムではASCII文字のみ入力可能です。

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

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

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

Page 6: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

6

4.4. 基板上の LED LD2(緑)の点滅間隔の変更

基板上の LED LD2(緑)の点滅間隔を変更するコマンドは以下のようになります。

番号 受信コマンド 動作

1 LD2 B0\0 LD2(緑) 点灯1000mSec / 消灯2000mSec

2 LD2 B1\0 LD2(緑) 点灯100mSec / 消灯100mSec

3 LD2 B2\0 LD2(緑) 点灯200mSec / 消灯200mSec

4 LD2 B3\0 LD2(緑) 点灯300mSec / 消灯300mSec

この例では “LD2 B1&00” とセットします。0x20未満、0x7F以上のコードは&xxの形で入力します。

&00は0x00です。 <CR>の 0x0Dなら&0Dとします。&自体を入力する場合は &26 と入力してください。

”LD2 B1&00” を入力して [送信] ボタンをクリックした結果、NUCLEO-F401REは LD2(緑)を100mSec間隔で点滅

します。

また、受信データ ”LD2 B1&00” をエコーバック送信します。

受信データの欄にはエコーバックされたデータが表示されます。

LD2(緑)を最初の状態の 点灯1000mSec / 消灯2000mSec にしたい場合は、”LD2 B0\0” を送信します。

Page 7: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

7

5. プロジェクトの構成

5.1. プロジェクトF401N_VCPの起動画面

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

左側のプロジェクト・エクスプローラーの F401N_VCPを展開した状態です。

5.2. 追加したソース・フォルダとファイル

追加したソース・フォルダとファイルについて簡単に説明します。

1) CommonModules (ソース・フォルダ)

a) CommonModules.h CommonModules.c (ファイル)

共通に使用するモジュールを記述してあります。

時間待ち、文字列操作 などの処理を記述しています。

2) Communicate_VCP (ソース・フォルダ)

a) Communicate_VCP .h Communicate_VCP .c (ファイル)

接続相手との通信処理を記述しています。

データを受信して、受信データをそのまま送信します。(エコーバック)

受信データを判定して、LD2(緑)の点滅間隔変更コマンドの場合、点滅間隔を変更します。

3) Driver_USB (ソース・フォルダ)

Driver_USBの下にフォルダ STM32_USB_Device_Library と STM32_USB_OTG_Driver があります。

STMicroelectronics社が提供しているUSBのドライバです。

Page 8: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

8

4) Handles (ソース・フォルダ)

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

a) HandleCLK.h HandleCLK.c (ファイル)

内部クロックHSIを使用するための設定を記述しています。

HSI(周波数16MHz)を入力して PLLにより84MHzにしてシステムクロック SYSCLKとして使用します。

b) HandleGPIO.h HandleGPIO.c (ファイル)

GPIO入出力の初期設定を記述しています。

c) HandleTIM.h HandleTIM.c (ファイル)

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

1mSecごとにタイマ割り込みが発生するように設定しています。

5) UserPrograms (ソース・フォルダ)

LEDのための処理を記述しています。

a) UserPrograms.h UserPrograms.c (ファイル)

Status LED : LD2(緑) に使用している GPIOの初期設定と点滅処理を記述しています。

6) VCP (ソース・フォルダ)

VCPの下にフォルダ inc と src があります。VCP(仮想COMポート)通信のためのドライバです。

5.3. VCP通信の利用

1) データ送信

Communicat_VCP.hで宣言しているバッファ defVCP_TxBuffer に送信データをセットしてます。

そして引数に送信データ数と defVCP_TxBufferをセットして、以下のモジュールを呼び出すとデータを送信することが

できます。

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

// VCP送信処理

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

//引数 :

// uint16_t uint16_SendLength : 送信データ数

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

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

void SendVCP(uint16_t uint16_SendLength, uint8_t *puint8_SendData);

Page 9: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

9

2) データ受信

引数に受信データを格納するバッファのポインタを指定して、以下のモジュールを呼び出します。

戻り値の受信byte数が 1以上の場合、データが受信されています。

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

// VCP受信処理

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

//引数 :

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

//戻り値 :

// -1 : 受信なし

// 0 : Error

// 1以上 : 受信byte数

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

int16_t ReceiveVCP(uint8_t *puint8_ReceiveBuffer);

3) VCP送受信の例

ソースフォルダCommunicate_VCPの下のファイルCommunicate_VCP.cにVCP送受信の例が記述されて

います。

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

// VCP通信処理

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

//戻り値 :

// 0以下 : 受信なし

// 1以上 : 受信データ数

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

int16_t Communicate_VCP(void);

4) VCP受信データの処理の例

以下のモジュールで受信データを判定して、処理を行っています。

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

// 受信コマンド判定 および 実行

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

//引数

// uint16_t uint16_ReceiveLength : 受信データ数

// uint8_t *puint8_ReceiveData : 受信データが格納されたBufferのポインタ

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

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

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

uint16_t ExecuteCommandVCP(uint16_t uint16_RecieveLength, uint8_t *puint8_ReceiveData, uint8_t

*puint8_SendData);

Page 10: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

10

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

6.1. ソース・フォルダ src内のファイル

ソース・フォルダ src内のファイルでプログラムを追加した主なファイルについて簡単に説明します。

1) main.c

a) main関数

プログラムはここから開始します。主に初期化処理関数を呼び出しています。

int main(void)

呼び出している初期化処理は以下の通りです。

b) システムクロックの設定

システムクロック SYSCLKの設定を行います。

内部クロックHSIを入力に選択し、PLLを使用して 84MHzに設定します。

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

// HSIを選択して、PLL ClockをSystem Clockとして使用する。 : SYSCLK = 84MHz

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

void SetHSICLK84MHz(void);

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

void RCC_Configuration(void);

d) GPIOの初期化

void Init_GPIOs(void);

e) Status LEDポートの初期化

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

// Status LEDポート初期化 : LD2(緑)

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

InitializePortStatusLED();

Page 11: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

11

f) TIM11の初期化

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

// TIM11初期化

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

InitializeTIMxx(TIM11, RCC_APB2Periph_TIM11, GLB_uint16_vTIM11_CCR1);

EnableIrqTIMxx(TIM11, RCC_APB2Periph_TIM11, TIM1_TRG_COM_TIM11_IRQn);

// TIM11 Interrupt ON : 割り込み許可

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

g) VCPの初期化

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

// VCP Communication初期化

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

InitializeCommunicate_VCP();

2) stm32f4xx_it.h stm32f4xx_it.c

このファイルに割り込み処理を記述します。

本プロジェクトサンプルではTIM11のタイマ割り込み処理および USBの割り込み処理を記述しています。

6.2. HandleCLK

動作クロックに内部クロックHSI : 16MHzを選択し、PLLにより 84MHzにして使用します。

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

// HSIを選択して、PLL ClockをSystem Clockとして使用する。 : SYSCLK = 84MHz

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

void SetHSICLK84MHz(void);

Page 12: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

12

6.3. HandleGPIO

GPIOを初期化します。

1) 低消費電力モード時のGPIO初期化

最初は、使用しないGPIOピンをアナログ入力モードに初期化します。

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

// 低消費電力モード時のGPIO初期化

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

void InitializeGPIOs_LowPower(void);

2) GPIOの初期化

必要なGPIOの初期化を行います。

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

// GPIO初期化

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

void Init_GPIOs(void);

Page 13: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

13

6.4. HandleTIM

1) TIM11の初期化

タイマ割り込みのためにTIM11を初期化してインターバルをセットします。

1mSecごとに割り込みがかかるように設定しています。

以下の関数の引数にTIM11用のパラメータを指定して TIM11を初期化します。

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

// TIMxx初期化

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

//引数 :

// TIM_TypeDef *TIMxx : TIM選択

// uint32_t RCC_APB1Periph_TIMxx : specifies the APB1 peripheral to gates its clock.

// uint16_t uint16_TIMxx_CCR1 : TiMxx CH1のインターバル

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

void InitializeTIMxx(TIM_TypeDef *TIMxx, uint32_t RCC_APB1Periph_TIMxx, uint16_t uint16_TIMxx_CCR1);

2) タイマ割り込み許可

以下の関数の引数に希望するTIMxx用のパラメータを指定して割り込みを許可します。

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

// TIMxx割り込み許可

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

//引数 :

// TIM_TypeDef *TIMxx : TIM選択

// uint32_t RCC_APB1Periph_TIMxx : specifies the APB1 peripheral to gates its clock.

// uint8_t TIMxx_IRQn : STM32 specific Interrupt Numbers

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

void EnableIrqTIMxx(TIM_TypeDef *TIMxx, uint32_t RCC_APB1Periph_TIMxx, uint8_t TIMxx_IRQn);

Page 14: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

14

6.5. UserPrograms

UserPrograms.hには LEDに使用するGPIOに対する定義を記述してあります。

以下に、UaerPrograms.cに記述している関数の説明を記します。

1) LEDに使用するGPIOの初期化(共通処理)

GPIO番号とピン番号を指定して I/Oを初期化します。

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

// LEDポート初期化

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

//引数 :

// GPIO_TypeDef *GPIOx : GPIOポート指定

// uint16_t GPIO_Pin_x : GPIOピン指定

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

void InitializePortLED(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin_x);

2) LEDの点滅処理(共通処理)

GPIO番号とピン番号などを指定して 希望のLEDの点滅処理を行います。

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

// LED点滅 : 点灯/消灯 切り替え

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

// 点灯/消灯 を切り替えると同時に 点灯時間/消灯時間 をセットする。

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

//引数 :

// GPIO_TypeDef *GPIOx : GPIOポート指定

// uint16_t GPIO_Pin_x : GPIOピン指定

// int16_t *pint16_OnOff : ON/OFF状態

// 0 : OFF

// 1 : ON

// uint16_t *puint16_Timer : 点灯時間/消灯時間をセットする変数のポインタ

// uint16_t uint16_TimeON : 点灯時間

// uint16_t uint16_TimeOFF : 消灯時間

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

void BlinkLED(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin_x,

int16_t *pint16_OnOff, uint16_t *puint16_Timer,

uint16_t uint16_TimeON, uint16_t uint16_TimeOFF);

Page 15: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

15

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

a) StatusLED : LD2(緑)

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

// Status LEDポート初期化 : LD2(緑)

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

void InitializePortStatusLED(void);

4) StatusLED : LD2(緑)の点滅

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

// Status LED点滅 : LD2(緑) : 点灯/消灯 切り替え

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

// TIMx割り込み内でGLB_uint16_BlinkTimerStatusLEDをデクリメントする。

// GLB_uint16_BlinkTimerStatusLEDが0になった時、呼び出される。

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

// 点灯/消灯 を切り替えると同時に 点灯時間/消灯時間 をセットする。

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

//引数 :

// uint16_t uint16_TimeON : 点灯時間

// uint16_t uint16_TimeOFF : 消灯時間

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

void BlinkStatusLED(uint16_t uint16_TimeON, uint16_t uint16_TimeOFF);

Page 16: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

16

6.6. Communicate_VCP

1) VCPの初期化

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

// VCP Communication初期化 : USBをVCPとして使用するための初期化を行います。

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

void InitializeCommunicate_VCP(void);

2) VCP通信処理

VCPの受信待ちを行い、受信データを判定して LEDの点灯/消灯を行います。受信データはエコーバックします。

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

// VCP通信処理

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

//戻り値 :

// -1 : 処理中

// 0 : 終了

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

int16_t Communicate_VCP(void);

3) VCP送信処理

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

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

// VCP送信処理

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

//引数 :

// uint16_t uint16_SendLength : 送信データ数

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

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

void SendVCP(uint16_t uint16_SendLength, uint8_t *puint8_SendData);

Page 17: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

17

4) VCP受信処理

データ受信があった場合、受信データを取得して指定バッファにセットします。

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

// VCP受信処理

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

//引数 :

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

//戻り値 :

// -1 : 受信なし

// 0 : Error

// 1以上 : 受信byte数

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

int16_t ReceiveVCP(uint8_t *puint8_ReceiveBuffer);

5) 受信コマンドの実行

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

// 受信コマンドを実行する。

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

//引数 :

// uint16_t uint16_ReceiveLength : 受信データ数

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

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

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

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

uint16_t ExecuteCommandVCP(uint16_t uint16_ReceiveLength, uint8_t *puint8_ReceiveData,

uint8_t *puint8_SendData);

Page 18: VCP Access VCP PC NUCLEO-F401REtri-s.world.coocan.jp/Project_STM32/TrST_F401N/Project_F...NUCLEO-F401REはSTMicroelectronics社製のCortex-M4 ARM CPUであるSTM32F401RET6を搭載した基板です。

18

改訂履歴

V001 2014/09/30 初版

V002 2014/09/30 誤記訂正

V003 2014/10/01 誤記訂正、 説明追加