STM32F103C8T6    

 1 ボードのメモ  
 2 ライタソフトのインストール 
 3 Lチカ(CP_13) 
 4 シリアル通信テスト 
 5 arduino-IDEで使う 
 6 arduino-IDE U いろいろテスト 
 7 mbed いろいろテスト 





 1 ボードのメモ    2016.09.25
 アマゾンでリストを見ていると「HiLetgo STM32F103C8T6 ARM STM32 Minimum システム 開発ボードモジュール Arduinoと互換 」というのが目に入りました。 様子からmbedで使えそうです。64Kフラッシュメモリ、20K SRAMというスペックで 価格は送料込みで¥310です。LPC1114のROMが32kBで、メモリの不足を考えていたので64kBあればととにかく注文しました(送料無料は魅力です)。

しかし、webで調べるとUSB-シリアルでは書き込みができない模様で、書き込み機 ST-LINK V2 がいるとのこと。しまったと思いましたがこれを調べてみると送料込み¥500で購入できます。すぐに申し込みました。10日あまりかかって両方共届きました。



双方を付属のケーブルでつなぎ、USBに挿入するとPC13に接続されてた赤LEDが点滅しました。ボードの常でテスト用のプログラムが書き込まれているようです

mbedのweb IED では、このボードは登録されていません。NUCLEO-F103RB を選びます。これはSTM32F103C8Tより、ROMが大きい(128kB)、ピンが多い(64pin)ものだそうです。構造は同じなので、ないピンは使わない、ROMに注意する、の2点を考慮すれば問題がないそうです。
ピン配置:
 1  VBAT SV BAT 
 2  PC13-ANTI_TAMP(4) I/O PC13 ANTI_TAMP 
 3  PC14-OSC32_IN(4) I/O PC14-OSC32_IN 
 4  PC15-OSC32_OUT(4) I/O PC15-OSC32_OUT
 5  OSC_IN I OSC_IN
 6  OSC_OUT O OSC_OUT
 7  NRST I/O NRST 
 8  VSSA SV SSA 
 9  VDDA SV DDA
10  PA0-WKUP/ USART2_CTS/ ADC_IN0/TIM2_CH1_ETR I/O PA0 WKUP/USART2_CTS(6)/AD C_IN0/ TIM2_CH1_ETR(6)
11  PA1/USART2_RTS/ ADC_IN1/TIM2_CH2  I/O PA1 USART2_RTS(6)/ ADC_IN1/ TIM2_CH2(6)
12  PA2/USART2_TX/ ADC_IN2/ TIM2_CH3  I/O PA2 USART2_TX(6)/ ADC_IN2/ TIM2_CH3(6)
13  PA3/USART2_RX/ ADC_IN3/TIM2_CH4  I/O PA3 USART2_RX(6)/ ADC_IN3/TIM2_CH4(6)
14  PA4/SPI1_NSS/ USART2_CK/ADC_IN4 I/O PA4 SPI1_NSS(6)/ USART2_CK(6)/ ADC_IN4 
15  PA5/SPI1_SCK/ ADC_IN5 I/O PA5 SPI1_SCK(6)/ ADC_IN5 
16  PA6/SPI1_MISO/ ADC_IN6/TIM3_CH1 I/O PA6 SPI1_MISO(6)/ ADC_IN6/TIM3_CH1(6)
17  PA7/SPI1_MOSI/ ADC_IN7/TIM3_CH2  I/O PA7 SPI1_MOSI(6)/ ADC_IN7/TIM3_CH2(6)
18  PB0/ADC_IN8/ TIM3_CH3 I/O PB0 ADC_IN8/TIM3_CH3(6) 
19  PB1/ADC_IN9/ TIM3_CH4 I/O PB1 ADC_IN9/TIM3_CH4(6)
20  PB2 / BOOT1 I/O FT PB2/BOOT1
21  PB10/I2C2_SCL/ USART3_TX I/O FT PB10 I2C2_SCL/USART3_TX(5)(6)
22  PB11/I2C2_SDA / USART3_RX I/O FT PB11 I2C2_SDA/ USART3_RX(5)(6)
23  VSS_1 SV 
24  VDD_1 SV 
25  PB12/SPI2_NSS / I2C2_SMBAl/ USART3_CK / TIM1_BKIN I/O FT PB12 SPI2_NSS(5) /I2C2_SMBAl(5)/ USART3_CK(5)(6)/ TIM1_BKIN(6)
26  PB13/SPI2_SCK / USART3_CTS / TIM1_CH1N I/O FT PB13 SPI2_SCK(5)/ USART3_CTS(5)(6)/ TIM1_CH1N (6
27  PB14/SPI2_MISO / USART3_RTS / TIM1_CH2N I/O FT PB14 SPI2_MISO(5) /USART3_RTS(5)(6) TIM1_CH2N (6)
28  PB15/SPI2_MOSI TIM1_CH3N  I/O FT PB15 SPI2_MOSI(5)/ TIM1_CH3N(6)
29  PA8/USART1_CK/ TIM1_CH1/MCO I/O FT PA8 USART1_CK/ TIM1_CH1(6)/MCO 
30  PA9/USART1_TX/ TIM1_CH2 I/O FT PA9 USART1_TX(6)/ TIM1_CH2(6)
31  PA10/USART1_RX/ TIM1_CH3 I/O FT PA10 USART1_RX(6)/ TIM1_CH3(6)
32  PA11 / USART1_CTS/ CANRX / USBDM/ TIM1_CH4 I/O FT PA11 USART1_CTS/ CANRX(6)/ TIM1_CH4(6) / USBDM
33  PA12 / USART1_RTS/ CANTX / USBDP/ TIM1_ETR I/O FT PA12 USART1_RTS/ CANTX(6) / TIM1_ETR(6) / USBDP
34  PA13/JTMS/SWDIO I/O FT JTMS/SWDIO PA13
35  VSS_2 SV SS_2 
36  VDD_2 SV DD_2
37  PA14/JTCK/SWCLK I/O FT JTCK/SWCLK PA14
38  PA15/JTDI I/O FT JTDI PA15
39  PB3/JTDO/TRACESWO I/O FT JTDO PB3/TRACESWO 
40  PB4/JNTRST I/O FT JNTRST PB4
41  PB5/I2C1_SMBAl I/O PB5 I2C1_SMBAl 
42  PB6/I2C1_SCL/ TIM4_CH1 I/O FT PB6 I2C1_SCL(6)/ TIM4_CH1(5)(6)
43  PB7/I2C1_SDA/ TIM4_CH2 I/O FT PB7 I2C1_SDA(6)/ TIM4_CH2(5) (6)
44  BOOT0 I BOOT0 
45  PB8/TIM4_CH3 I/O FT PB8 TIM4_CH3(5) (6) 
46  PB9/TIM4_CH4 I/O FT PB9 TIM4_CH4(5) (6) 
47  VSS_3 SV SS_3 
48  VDD_3 SV 
IO端子:
PA0-WKUP/ USART2_CTS/ ADC_IN0/TIM2_CH1_ETR I/O PA0 WKUP/USART2_CTS(6)/AD C_IN0/ TIM2_CH1_ETR(6)	
PA1/USART2_RTS/ ADC_IN1/TIM2_CH2  I/O PA1 USART2_RTS(6)/ ADC_IN1/ TIM2_CH2(6)	
PA10/USART1_RX/ TIM1_CH3 I/O FT PA10 USART1_RX(6)/ TIM1_CH3(6)	
PA11 / USART1_CTS/ CANRX / USBDM/ TIM1_CH4 I/O FT PA11 USART1_CTS/ CANRX(6)/ TIM1_CH4(6) / USBDM	
PA12 / USART1_RTS/ CANTX / USBDP/ TIM1_ETR I/O FT PA12 USART1_RTS/ CANTX(6) / TIM1_ETR(6) / USBDP	
PA13/JTMS/SWDIO I/O FT JTMS/SWDIO PA13	
PA14/JTCK/SWCLK I/O FT JTCK/SWCLK PA14	
PA15/JTDI I/O FT JTDI PA15	
PA2/USART2_TX/ ADC_IN2/ TIM2_CH3  I/O PA2 USART2_TX(6)/ ADC_IN2/ TIM2_CH3(6)	
PA3/USART2_RX/ ADC_IN3/TIM2_CH4  I/O PA3 USART2_RX(6)/ ADC_IN3/TIM2_CH4(6)	
PA4/SPI1_NSS/ USART2_CK/ADC_IN4 I/O PA4 SPI1_NSS(6)/ USART2_CK(6)/ ADC_IN4	
PA5/SPI1_SCK/ ADC_IN5 I/O PA5 SPI1_SCK(6)/ ADC_IN5	
PA6/SPI1_MISO/ ADC_IN6/TIM3_CH1 I/O PA6 SPI1_MISO(6)/ ADC_IN6/TIM3_CH1(6)	
PA7/SPI1_MOSI/ ADC_IN7/TIM3_CH2  I/O PA7 SPI1_MOSI(6)/ ADC_IN7/TIM3_CH2(6)	
PA8/USART1_CK/ TIM1_CH1/MCO I/O FT PA8 USART1_CK/ TIM1_CH1(6)/MCO	
PA9/USART1_TX/ TIM1_CH2 I/O FT PA9 USART1_TX(6)/ TIM1_CH2(6)	
PB0/ADC_IN8/ TIM3_CH3 I/O PB0 ADC_IN8/TIM3_CH3(6)	
PB1/ADC_IN9/ TIM3_CH4 I/O PB1 ADC_IN9/TIM3_CH4(6)	
PB10/I2C2_SCL/ USART3_TX I/O FT PB10 I2C2_SCL/USART3_TX(5)(6)	
PB11/I2C2_SDA / USART3_RX I/O FT PB11 I2C2_SDA/ USART3_RX(5)(6)	
PB12/SPI2_NSS / I2C2_SMBAl/ USART3_CK / TIM1_BKIN I/O FT PB12 SPI2_NSS(5) /I2C2_SMBAl(5)/ USART3_CK(5)(6)/ TIM1_BKIN(6)	
PB13/SPI2_SCK / USART3_CTS / TIM1_CH1N I/O FT PB13 SPI2_SCK(5)/ USART3_CTS(5)(6)/ TIM1_CH1N (6	
PB14/SPI2_MISO / USART3_RTS / TIM1_CH2N I/O FT PB14 SPI2_MISO(5) /USART3_RTS(5)(6) TIM1_CH2N (6)	
PB15/SPI2_MOSI TIM1_CH3N  I/O FT PB15 SPI2_MOSI(5)/ TIM1_CH3N(6)	
PB2 / BOOT1 I/O FT PB2/BOOT1	
PB3/JTDO/TRACESWO I/O FT JTDO PB3/TRACESWO	
PB4/JNTRST I/O FT JNTRST PB4	
PB5/I2C1_SMBAl I/O PB5 I2C1_SMBAl	
PB6/I2C1_SCL/ TIM4_CH1 I/O FT PB6 I2C1_SCL(6)/ TIM4_CH1(5)(6)	
PB7/I2C1_SDA/ TIM4_CH2 I/O FT PB7 I2C1_SDA(6)/ TIM4_CH2(5) (6)	
PB8/TIM4_CH3 I/O FT PB8 TIM4_CH3(5) (6)	
PB9/TIM4_CH4 I/O FT PB9 TIM4_CH4(5) (6)	
PC13-ANTI_TAMP(4) I/O PC13 ANTI_TAMP	
PC14-OSC32_IN(4) I/O PC14-OSC32_IN	
PC15-OSC32_OUT(4) I/O PC15-OSC32_OUT	
 



 2 ライタソフトのインストール    2016.09.25
 プログラムライタST-LINK V2の仕様には専用のユーティリティが必要です。
このページに詳しく解説されています。STMicroelectronicsのサイトからダウンロードします。
上記のpdfの支持に従って進み、「STSW-LINK004 ST STM32 ST-LINK utility」をクリックして最後に「Get Software」をクリックします。これでインストーラーがダウンロードできます。あとはインストーラーの指示に従ってインストールを続けます。

プログラムライタの使い方:
1 デスクトップに作られるショートカットアイコンなどから STM32 ST-LINK UTILITY を起動します。
2 ボードとライタをつなぎ、USBに接続して、Target→ConnectをクリックするとMCUを読み取ります。
3 Program Verifyアイコンをクリックすると書き込みの画面が現れるのでFile Pathから目的の.binファイルを指定します。
4 スタートボタンを押します。
(注意)File Path は設定した時点で読み込むようです。.binを更新したときは指定し直さないと以前のファイルを書き込みます。      



 3 Lチカ(CP_13)    2016.09.25
mbed IDE に NUCLEO-F103RB をセットして、新規から blink-led を選びました。ポート指定は LED1 になっているのですが私のボードはどうなっているのかわからないのでPC3に置き換えました。しかし、”PC3”は登録されていません。P3もだめです。しかしwebを探していると”PC_3”の表記を発見しました。LED1をPC_3に書き換えてビルドしたところエラーなく.binができました。
早速ライタで書き込んでみると期待通りの点滅をしました。
#include "mbed.h"

DigitalOut myled(PC_13);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(2.0); // 2 sec
        myled = 0; // LED is OFF
        wait(2.0); // 2 sec
    }
}
     



 4 シリアル通信テスト    2016.10.02
当分の間、プログラム作成はweb上のIDEを NUCLEO-F103RB ボードとして使い(ピン名とROM容量に注意が入りますが)、プログラム書き込みには St-link V2 と STM32 ST-LINK UTILITY を使うことにします。

シリアル通信では TX RX GND の引き出しが必要ですから、今後のことを考えてユニバーサル基板(再利用品)に乗せてみました。

四隅のピンだけをユニバーサル基板に真鍮の針金ではんだ付けして、その他の端子はその都度はんだ付で引き出す予定です。とりあえずTX、RX、GNDを引き出しました。特に理由はないのですが USART2(TX=PA_2、RX=PA_3)を使うことにしました。

プログラムはwebにあるサンプルを使っています。ただ、今のIDE環境ではこのボードのピン指定は PA_2 のように大文字で書き、かつアンダースコアを入れておかないとコンパイル時にエラーになります。

プログラムは次のとおりです。
#include "mbed.h"
 
Serial pc(PA_2, PA_3); // tx, rx
//Serial pc(USBTX, USBRX); // tx, rx
 
int main() {
    pc.printf("Hello World!");
    while(1) {
        pc.putc(pc.getc() + 1);
    }
}
シリアル通信はデフォルトで、9600bps、8ビット、ノンパリティだそうです。
TX、RX端子をUSB-シリアル変換器を経由してPCにつなぎ、teratarmを起動して、リセットボタンを押すとHello World!と表示され、キーボードから文字を送るとアスキーコード+1の文字が返ってきました。シリアル通信はこの形でできるようです。

これだけの内容ですが、ROM使用量は 23.9kB とかなり大きくなっています。ROM容量が64kBあるのでそこそこには使えると思うのですが思いの外ROMを消費します。      



 5 arduino-IDEで使う  2016.10.03
STM32F103C8T6をaruduinoとして使う(aruduino-IDEで使う)方法がこのサイトで紹介されています。トレースして実現を試みましたが、結果的に十分理解できず書き込み方法がわかりませんでした。しかし、手元にある st-link V2 で書き込めば Arduino-IDE で作成したプログラムが書き込み・実行できることが分かりました。
https://github.com/rogerclarkmelbourne/Arduino_STM32/wikiのinstallationに従って、
@ Arduino_STM32-master.zipをダウンロードし、解凍しました。
A できたArduino_STM32-masterをC:\Program Files (x86)\Arduino/hardweareにコピーしました。
B この中の drivers\win\install_drivers.bat を実行しました。(その他に幾つかの操作をしましたが覚えていません多分関係ないと思います)
以上の作業が終わった時点でarduino-IDEを起動します。そして、
@ メニュー→ツール→ボード から ボードマネージャーを起動して、Arduino SAM Boards(32bits ARM Cortex-M3)…をインストールします。
A メニュー→ツール→ボード で ARM の選択肢が出るから、Generic STM32F103C series を選び、
B メニュー→ツール→variant… で 64k Flash のものを選びます。
C メニュー→ツール→Upload Method:"STLink"を選びます。
この状態でArduino-IDEでプログラムを書き「右矢印マーク」(コンパイルと書き込み)ボタンをクリックするとST-LINK経由で書き込まれます。
(記述に間違いがあるかもしれませんが確認できません)

プログラム"blink"
void setup() {
  pinMode(PC13, OUTPUT);   // PC13に変更 PC13にLED
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(200);
}
プログラム"serial_test"
void setup(){
  Serial2.begin(19200);
  Serial2.println("Hello Serial 2");
}

void loop() {
    Serial2.println("Hello World!");
    while(1) {
        Serial2.write(Serial2.read() + 1);
    }
}
ハードウエアは USART2 を引き出しています。 TX、RXはUSB-シリアル変換器経由でPCに接続しています。
teratarmで通信しました。 aruduinoには"printf"関数はありませんが、約13kBのプログラムとなり、mbedより小さなROMで動くようです。(mbedでは約23kBになりました)

(2016.10.04) ブートローダーを書き込むと USB-シリアル変換器 で書き込みができるようですが、ジャンパーピンを毎回差し替えなければならないようです。現在、手持ちの ST-LINK があり、これだと切り替えが必要なく、かつ、aruduino-IDEから直接書き込めるので便利です。ブートローダーの利用は考えないことにします。     



 6 arduino-IDE U いろいろテスト
2016.10.06 一つのプログラムの中に複数のテスト項目を書き込み、teratarm表示のメニューを選択することで各項目のテストができるように考えました。


メニューはとりあえず次のとおりです。リセットで選択できます。
--- MENU ---
1 blink02
2 blink2_1
3 serial to PC
4 LCD
5 --- ---
     1 -- 5 ?
メニュー1は内蔵LEDの速い点滅です。
メニュー2は内蔵LEDの遅い点滅です。
メニュー3はPCのteratarmに文字を送ります。(ここまでで 13,652バイト)
メニュー4はLCD(1602)に文字列を書き込みます。(ここまでで 14、564バイト)

ボードの使用端子:
  USART2 - PA2:TX PA3:RX
  LCD - PB10:rs PB11:en PB12:D4 PB13:D5 PB14:D6 PB15:D7 
    付 LCDコネクタ 1:GND(黒) 2:Vcc(橙) 3:RS(茶) 4:EN(黄) 5:D4(緑) 6:D5(青) 7:D6(灰) 8:D7(白)
  I2C1 - PB6:SCL PB7:SDA (予定)

プログラムです。


    





 7 mbed いろいろテスト 
2016.10.09 aruduinoで始めたのですが、I2Cで行き詰ったので本来のmbedで同じことを試みました。
一つのプログラムのなかでteratarmのメニューによって幾つかの動作をテストする方法です。実験で適当に増やしていますので無駄なことも入っています。
 --- M E N U ---
1 led blink 02_1   LED早い点滅
2 led blink 2_1    LED遅い点滅
3 serial to PC    teratarmで通信
4 LCD         キャラクタLCD表示
5 CLOCK_1       時刻表示LCD
6 CLOCK_2 SD     時刻・気圧・温度表示 および SD記録
  1 -- 6 ?

使用したポートは
serial: USART2 PA_2 PA_3 //tx,rx
lcd: PB_10,PB_11,PB_12,PB_13,PB_14,PB_15  // rs, e, d4-d7
I2C: PB_7, PB_6 // sda, scl
SD: PA_7,PA_6,PA_5,PA_4, "sd" //mosi,miso,sck,cs

LPC1114ではできなかったSDカード記録ですが、流石にこれでは可能でした。しかし、ROMを64kB中55kBを消費しています。良いところもあるのでしょうがROMの使用量は想像を超えています。
なお、テストのため1秒毎の日付・時刻・気圧・温度を記録しています。
#include "mbed.h"
#include "TextLCD.h"  //Copyright (c) 2007-2010, sford, http://mbed.org
#include "I2C.h"
#include "BMP180.h"  //Copyright (c) 2014 Kenji Arai / JH1PJL
#include "SDFileSystem.h"  //Copyright (c) 2016 Neil Thiessen
 
//Create an SDFileSystem object
SDFileSystem sd(PA_7,PA_6,PA_5,PA_4, "sd");
 
Serial pc(PA_2, PA_3); // tx, rx
I2C i2c(PB_7, PB_6);        // sda, scl
DigitalOut led(PC_13);
TextLCD lcd(PB_10,PB_11,PB_12,PB_13,PB_14,PB_15); // rs, e, d4-d7
BMP180      bmp180(PB_7,PB_6);   // Bosch sensor dat clk


const int addr1 = 0xd0; // define the I2C Address 8bits RTC DS3232
 
int main() {
    
    char s[20],d[10];
    uint8_t day,hour,min,sec,year,month,t0,t1;
    lcd.cls();wait(0.5);
    
   //Mount the filesystem
    sd.mount();    
    
    pc.printf("%s\r","--- M E N U ---");
    pc.printf("%s\r","1 led blink 02_1");
    pc.printf("%s\r","2 led blink 2_1");
    pc.printf("%s\r","3 serial to PC");
    pc.printf("%s\r","4 LCD ");
    pc.printf("%s\r","5 CLOCK_1");
    pc.printf("6 CLOCK_2 SD\n\r");
    
    pc.printf("%s\r"," 1 -- 5 ? ");
    char c=pc.getc();
    
    if(c=='1'){
        while(1) {
            led = 1;
           wait(1);
            led = 0;
            wait(0.2);
        }
    }
            
   if(c=='2'){
        while(1) {
            led = 1;
            wait(1);
            led = 0;
            wait(2);
        }
    }
        
   if(c=='3'){
        pc.printf("%s\r","Hello World! 999");
        while(1) {
            led = 1;
            wait(0.1);
            led = 0;
            wait(0.1);
        }
    }
        
   if(c=='4'){
       lcd.cls();
       lcd.locate(1,0);//int column,  int row 
       lcd.printf("Hello World!\n");
       wait(2);
       lcd.locate(2,1);//int column,  int row 
       lcd.printf("2016.10.08 SAT");
       while(1) {
            led = 1;
            wait(0.1);
            led = 0;
            wait(0.05);
        }
    }
        
   if(c=='5'){
        pc.printf(" Clock on LCD\n\r");  
        while(1){//--2
            s[0]=0; s[1]=0;
            i2c.write(addr1,s,1,true);
            i2c.read(addr1|1,d,3);

            lcd.locate(0, 0);
 
//            lcd.writeCommand(12); wait(0.1); //cursor off
            lcd.locate(0, 1);
            lcd.printf("                ");
            lcd.locate(0, 0);
            lcd.printf(" TIME %d%d:",d[2]/16,d[2]%16);//hour
            lcd.printf("%d%d:",d[1]/16,d[1]%16); //min
            lcd.printf("%d%d"  ,d[0]/16,d[0]%16);  //sec
            wait(0.1);
        }// end of while 2


   }
   
   if(c=='6'){
        pc.printf(" Clock on LCD\n\r");
        while(1) { //--2
            s[0]=0;
            s[1]=0;
            i2c.write(0xd0,s,1,true);
            i2c.read(0xd0|1,d,7);

            year=(d[6]/16)*10+d[6]%16;
            month=(d[5]/16)*10+d[5]%16;
            day =(d[4]/16)*10+d[4]%16;
            hour=(d[2]/16)*10+d[2]%16;
            min =(d[1]/16)*10+d[1]%16;
            sec =(d[0]/16)*10+d[0]%16;

//            lcd.writeCommand(12);   //cursor off
            wait(0.05);             //cursor off
            lcd.locate(0, 0);
            lcd.printf("%d/%2d/%2d ",year,month,day);
            lcd.locate(0, 1);
            lcd.printf("%2d:%02d:%02d ",hour,min,sec);
            
            if(sec%10 == 0) { // per 10secs lcd display pressure
                        //  ---------- Barometer Sensor / BMP180 ---------------
                bmp180.normalize();
                lcd.locate(10,0);
                lcd.printf("%4.0f  ",bmp180.read_pressure()+4.4);
                lcd.locate(10,1);
                lcd.printf(" %2.1f ",bmp180.read_temperature() );            
            }
    
            t1=min;
            if(t1 != t0){
                //Perform a write test
                pc.printf("\nWriting to SD card...");
                FILE *fp = fopen("/sd/sdtest.txt", "a");
                if (fp != NULL) {
                    fprintf(fp, "%d/%2d/%2d %2d:%02d:%02d %4.0f   %2.1f \r"
                            ,year,month,day,hour,min,sec,
                            bmp180.read_pressure()+4.4,bmp180.read_temperature() );
                    fclose(fp);
                    printf("success!\n");
                } else {
                    printf("failed!\n");
                }
                t0=t1;
            }        
        }
    }
}
    







工事中























 2 予    定   2016.00.00

    








inserted by FC2 system