teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Committer:
takeru0x1103
Date:
Thu Dec 06 01:50:17 2018 +0000
Revision:
21:78302ecdb661
Parent:
19:4b0fe9a5ec38
Child:
25:f3a6e7eec9c3
for nomurasan;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeru0x1103 0:ecd925601fc6 1 #include "typedef.h"
takeru0x1103 0:ecd925601fc6 2 #include "uart.h"
takeru0x1103 19:4b0fe9a5ec38 3 #include "mbed.h"
takeru0x1103 19:4b0fe9a5ec38 4 #include "globalFlags.h"
takeru0x1103 0:ecd925601fc6 5
takeru0x1103 8:1ca49cb18290 6 //ログ吐出し様シリアルポートインスタンス
takeru0x1103 8:1ca49cb18290 7 //----------------------------------
takeru0x1103 8:1ca49cb18290 8 #define WIREED_SERIAL
takeru0x1103 0:ecd925601fc6 9 #ifdef WIREED_SERIAL
takeru0x1103 0:ecd925601fc6 10 Serial sp(USBTX, USBRX); //有線のポート
takeru0x1103 8:1ca49cb18290 11 #define BAUD_RATE 115200
takeru0x1103 0:ecd925601fc6 12 #else
takeru0x1103 0:ecd925601fc6 13 Serial sp(p9, p10);//TWILITEをモジュールを接続したポート
takeru0x1103 0:ecd925601fc6 14 #define BAUD_RATE 115200
takeru0x1103 0:ecd925601fc6 15 #endif
MasashiNomura 7:bfbbf605be43 16
MasashiNomura 14:76a56d517103 17 //Serial sp46Axis(p28,p27);
MasashiNomura 7:bfbbf605be43 18
takeru0x1103 8:1ca49cb18290 19 //Asciiコード
takeru0x1103 8:1ca49cb18290 20 #define CR 0x0D
takeru0x1103 8:1ca49cb18290 21 #define LF 0x0A
takeru0x1103 19:4b0fe9a5ec38 22
takeru0x1103 19:4b0fe9a5ec38 23 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 24 //グローバル変数
takeru0x1103 19:4b0fe9a5ec38 25 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 26 char cmdBuf[G_CMD_BUF_SIZ] ={0,} ;// コマンドバッファ
takeru0x1103 19:4b0fe9a5ec38 27 static UCHAR bp=0;// バッファポインタ
takeru0x1103 19:4b0fe9a5ec38 28
takeru0x1103 19:4b0fe9a5ec38 29 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 30 //受信コマンドバッファクリア
takeru0x1103 19:4b0fe9a5ec38 31 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 32 static void xBufClear(){
takeru0x1103 19:4b0fe9a5ec38 33 memset(&cmdBuf[0] , 0x00 , sizeof(cmdBuf) ); //コマンドバッファクリア
takeru0x1103 19:4b0fe9a5ec38 34 bp=0; //バッファポインタを先頭に戻す
takeru0x1103 19:4b0fe9a5ec38 35 }
takeru0x1103 19:4b0fe9a5ec38 36 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 37 //エンターが押されてコマンドを転送
takeru0x1103 19:4b0fe9a5ec38 38 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 39 static void xSendMsg(){
takeru0x1103 19:4b0fe9a5ec38 40
takeru0x1103 19:4b0fe9a5ec38 41 memcpy(g_CmdBuf, cmdBuf, sizeof(g_CmdBuf));
takeru0x1103 19:4b0fe9a5ec38 42 gf_CmdPrs = true;
takeru0x1103 19:4b0fe9a5ec38 43 xBufClear();
takeru0x1103 19:4b0fe9a5ec38 44 }
takeru0x1103 19:4b0fe9a5ec38 45 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 46 //バックスペースが来た時の処理
takeru0x1103 19:4b0fe9a5ec38 47 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 48 static void xBs(){
takeru0x1103 19:4b0fe9a5ec38 49 cmdBuf[bp] = 0x0; //現在位置をNULLにする
takeru0x1103 19:4b0fe9a5ec38 50 if(bp>0) bp--; //インデックスを戻す(先頭でなければ)
takeru0x1103 19:4b0fe9a5ec38 51 }
takeru0x1103 19:4b0fe9a5ec38 52
takeru0x1103 19:4b0fe9a5ec38 53 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 54 //コマンドバッファへ格納
takeru0x1103 19:4b0fe9a5ec38 55 //-------------------------------------------------------------
takeru0x1103 19:4b0fe9a5ec38 56 static void xPush(char cBuf){
takeru0x1103 19:4b0fe9a5ec38 57 //バッファ終端だったらエラー
takeru0x1103 19:4b0fe9a5ec38 58 if(bp < sizeof(cmdBuf)-1){
takeru0x1103 19:4b0fe9a5ec38 59 cmdBuf[bp] = cBuf;//受信文字をバッファへ格納
takeru0x1103 19:4b0fe9a5ec38 60 bp++;//次へ進める
takeru0x1103 19:4b0fe9a5ec38 61 }
takeru0x1103 19:4b0fe9a5ec38 62 }
takeru0x1103 19:4b0fe9a5ec38 63
takeru0x1103 19:4b0fe9a5ec38 64 //=============================================================
takeru0x1103 19:4b0fe9a5ec38 65 // コマンドバッファへ受信キャラを格納
takeru0x1103 19:4b0fe9a5ec38 66 //=============================================================
takeru0x1103 19:4b0fe9a5ec38 67 static void xPushBuf(UCHAR iRxChar){
takeru0x1103 19:4b0fe9a5ec38 68 switch(iRxChar){
takeru0x1103 19:4b0fe9a5ec38 69 //▼タブ
takeru0x1103 21:78302ecdb661 70 case 0x21: //!マーク
takeru0x1103 21:78302ecdb661 71 // gf.push();
takeru0x1103 19:4b0fe9a5ec38 72 break;
takeru0x1103 19:4b0fe9a5ec38 73 //▼バックスペース
takeru0x1103 19:4b0fe9a5ec38 74 case BS :
takeru0x1103 19:4b0fe9a5ec38 75 xBs();
takeru0x1103 19:4b0fe9a5ec38 76 break;
takeru0x1103 19:4b0fe9a5ec38 77 //▼エスケープ キャリッジリターン
takeru0x1103 19:4b0fe9a5ec38 78 case ESC:
takeru0x1103 19:4b0fe9a5ec38 79 case CR :
takeru0x1103 19:4b0fe9a5ec38 80 /*何もしない*/
takeru0x1103 19:4b0fe9a5ec38 81 break;
takeru0x1103 19:4b0fe9a5ec38 82 //▼ラインフィード(改行)
takeru0x1103 19:4b0fe9a5ec38 83 case LF :
takeru0x1103 19:4b0fe9a5ec38 84 xSendMsg();
takeru0x1103 19:4b0fe9a5ec38 85 break;
takeru0x1103 19:4b0fe9a5ec38 86 //▼スペース
takeru0x1103 19:4b0fe9a5ec38 87 case SPC:
takeru0x1103 19:4b0fe9a5ec38 88 xPush(0x0);//Null文字にしてバッファ格納
takeru0x1103 19:4b0fe9a5ec38 89 break;
takeru0x1103 19:4b0fe9a5ec38 90 //▼//その他
takeru0x1103 19:4b0fe9a5ec38 91 default :
takeru0x1103 19:4b0fe9a5ec38 92 xPush(iRxChar);//コマンドバッファへプッシュ
takeru0x1103 19:4b0fe9a5ec38 93 break;
takeru0x1103 19:4b0fe9a5ec38 94 }//switch
takeru0x1103 19:4b0fe9a5ec38 95 }
takeru0x1103 19:4b0fe9a5ec38 96
takeru0x1103 0:ecd925601fc6 97 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
takeru0x1103 0:ecd925601fc6 98 // UART 受信割り込みハンドラ
takeru0x1103 0:ecd925601fc6 99 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
takeru0x1103 0:ecd925601fc6 100 void uartRxIntHndler(){
takeru0x1103 0:ecd925601fc6 101 //1Byte抜き出す
takeru0x1103 0:ecd925601fc6 102 UCHAR buf = sp.getc();
takeru0x1103 0:ecd925601fc6 103 //エコーバック
takeru0x1103 17:f9610f3cfa1b 104 sp.putc(buf);
takeru0x1103 0:ecd925601fc6 105 //コマンドバッファに突っ込む
takeru0x1103 19:4b0fe9a5ec38 106 xPushBuf(buf);
takeru0x1103 0:ecd925601fc6 107 }
takeru0x1103 0:ecd925601fc6 108
takeru0x1103 0:ecd925601fc6 109 //=============================================================
takeru0x1103 0:ecd925601fc6 110 //初期設定
takeru0x1103 0:ecd925601fc6 111 //=============================================================
takeru0x1103 0:ecd925601fc6 112 void uartInit(){
takeru0x1103 19:4b0fe9a5ec38 113 //バッファクリア
takeru0x1103 19:4b0fe9a5ec38 114 xBufClear();
takeru0x1103 19:4b0fe9a5ec38 115
takeru0x1103 0:ecd925601fc6 116 //ボーレート設定
takeru0x1103 0:ecd925601fc6 117 sp.baud(BAUD_RATE);
takeru0x1103 0:ecd925601fc6 118
takeru0x1103 8:1ca49cb18290 119 //受信割り込みハンドラ登録(登録するハンドラ,割り込み要因)
takeru0x1103 8:1ca49cb18290 120 sp.attach(uartRxIntHndler,Serial::RxIrq);
takeru0x1103 0:ecd925601fc6 121
takeru0x1103 0:ecd925601fc6 122 sp.printf("***********\r\n");
takeru0x1103 0:ecd925601fc6 123 sp.printf("UART open!!\r\n");
takeru0x1103 0:ecd925601fc6 124 sp.printf("-----------\r\n");
takeru0x1103 18:5aa48aec9cae 125 sp.printf("INT16 = %d\r\n" ,sizeof(INT16) );
takeru0x1103 18:5aa48aec9cae 126 sp.printf("unsigned int = %d\r\n" ,sizeof(unsigned int) );
takeru0x1103 18:5aa48aec9cae 127 sp.printf("long = %d\r\n" ,sizeof(unsigned long) );
takeru0x1103 18:5aa48aec9cae 128 sp.printf("unsigned int = %d\r\n" ,sizeof(unsigned int) );
takeru0x1103 0:ecd925601fc6 129 sp.printf("***********\r\n");
takeru0x1103 0:ecd925601fc6 130 }