いろいろなテクニック.Nucleo と DISCO-F746 用.

Dependencies:   Array_Matrix mbed

Committer:
MikamiUitOpen
Date:
Sun Oct 15 11:41:48 2017 +0000
Revision:
0:bb939e0bc6e2
Child:
1:bbb9f0c3e523
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:bb939e0bc6e2 1 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 2 // 使用例:Nucleo と DISCO-746 が対象
MikamiUitOpen 0:bb939e0bc6e2 3 //
MikamiUitOpen 0:bb939e0bc6e2 4 // mbed 公式ライブラリリビジョン 153 で OK
MikamiUitOpen 0:bb939e0bc6e2 5 // 2017/10/15, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:bb939e0bc6e2 6 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 7
MikamiUitOpen 0:bb939e0bc6e2 8 #include "mbed.h"
MikamiUitOpen 0:bb939e0bc6e2 9 #pragma diag_suppress 870 // マルチバイト文字使用の warning 抑制のため
MikamiUitOpen 0:bb939e0bc6e2 10
MikamiUitOpen 0:bb939e0bc6e2 11 //------------------------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 12 // 以下で,行頭の「//」を削除して有効にした define 文 に対応する処理が実行される
MikamiUitOpen 0:bb939e0bc6e2 13 //
MikamiUitOpen 0:bb939e0bc6e2 14 //#define MY_MATH // 1. 算術関数の例
MikamiUitOpen 0:bb939e0bc6e2 15 //#define MY_SORT // 2. STL のソートの例
MikamiUitOpen 0:bb939e0bc6e2 16 //#define DYNAMIC_POLYMORPHISM // 3. 実行時ポリモーフィズム
MikamiUitOpen 0:bb939e0bc6e2 17 //#define STL_VECTOR // 4. STL の vecotr の例
MikamiUitOpen 0:bb939e0bc6e2 18 //#define MY_NEW // 5. new 演算子のメモリ割り当てエラーを検出の例
MikamiUitOpen 0:bb939e0bc6e2 19 //#define FUNCTION_OBJECT // 6. function object の例
MikamiUitOpen 0:bb939e0bc6e2 20 //#define FUNCTION_POINTER // 7. 関数ポインタの例
MikamiUitOpen 0:bb939e0bc6e2 21 //#define FUNCTION_POINTER_IN_CLASS // 8. クラス内で関数ポインタを使う例
MikamiUitOpen 0:bb939e0bc6e2 22 //#define PASS_ARRAY_CONSTRUCTOR // 9. コンストラクタに渡した Array<> を使う例
MikamiUitOpen 0:bb939e0bc6e2 23 //#define REFERENCE_ARRAY // 10. 異なる型の Array クラスの参照の代入の例
MikamiUitOpen 0:bb939e0bc6e2 24 //#define GET_PERIPHERAL_ADDRESS // 11. ピンの名前に対応するペリフェラルのアドレスを取得
MikamiUitOpen 0:bb939e0bc6e2 25 //#define UNION_EXAMPLE // 12. union の使用例
MikamiUitOpen 0:bb939e0bc6e2 26 //#define INITIALIZE_STRUCT // 13. 構造体の初期化
MikamiUitOpen 0:bb939e0bc6e2 27 //#define STRUCT_COPY // 14. 同じ構造で異なる構造体のコピー
MikamiUitOpen 0:bb939e0bc6e2 28 #define COMPOOUND_LITERAL // 15. 複合リテラルの使用例
MikamiUitOpen 0:bb939e0bc6e2 29 //
MikamiUitOpen 0:bb939e0bc6e2 30 // 有効にすべき define 文はここまで
MikamiUitOpen 0:bb939e0bc6e2 31 //------------------------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 32
MikamiUitOpen 0:bb939e0bc6e2 33 #include "MyMath.hpp" // 1. 算術関数の例
MikamiUitOpen 0:bb939e0bc6e2 34 #include "MySort.hpp" // 2. STL を使うソートの例
MikamiUitOpen 0:bb939e0bc6e2 35 #include "PolyMorphism.hpp" // 3. 実行時ポリモーフィズム
MikamiUitOpen 0:bb939e0bc6e2 36 #include "MyVector.hpp" // 4. STL の vecotr の例
MikamiUitOpen 0:bb939e0bc6e2 37 #include "MyNew.hpp" // 5. new 演算子のメモリ割り当てエラーを検出の例
MikamiUitOpen 0:bb939e0bc6e2 38 #include "FunctionObject.hpp" // 6. function object の例
MikamiUitOpen 0:bb939e0bc6e2 39 #include "FunctionPointer.hpp" // 7. function pointer の例
MikamiUitOpen 0:bb939e0bc6e2 40 #include "FunctionPointerInClass.hpp" // 8. クラス内で関数ポインタを使う例
MikamiUitOpen 0:bb939e0bc6e2 41 #include "PassArrayConstructor.hpp" // 9. コンストラクタに渡した Array<> を使う例
MikamiUitOpen 0:bb939e0bc6e2 42 #include "ReferenceArray.hpp" // 10. 異なる型の Array クラスの参照の代入の例
MikamiUitOpen 0:bb939e0bc6e2 43 #include "PeripheralAddress.hpp" // 11. ピンの名前に対応するペリフェラルのアドレスを取得
MikamiUitOpen 0:bb939e0bc6e2 44 #include "UnionExample.hpp" // 12. union の使用例
MikamiUitOpen 0:bb939e0bc6e2 45 #include "InitializeStruct.hpp" // 13. 構造体の初期化
MikamiUitOpen 0:bb939e0bc6e2 46 #include "StructCopy.hpp" // 14. 同じ構造で異なる構造体のコピー
MikamiUitOpen 0:bb939e0bc6e2 47 #include "CompoundLiteral.hpp" // 15. 複合リテラルの使用例
MikamiUitOpen 0:bb939e0bc6e2 48
MikamiUitOpen 0:bb939e0bc6e2 49 int main()
MikamiUitOpen 0:bb939e0bc6e2 50 {
MikamiUitOpen 0:bb939e0bc6e2 51 printf("\r\n2017/10/15 12:54\r\n");
MikamiUitOpen 0:bb939e0bc6e2 52 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 53 // 1 : 算術関数の例
MikamiUitOpen 0:bb939e0bc6e2 54 #ifdef MY_MATH
MikamiUitOpen 0:bb939e0bc6e2 55 MyMath();
MikamiUitOpen 0:bb939e0bc6e2 56 #endif // MY_MATH
MikamiUitOpen 0:bb939e0bc6e2 57
MikamiUitOpen 0:bb939e0bc6e2 58 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 59 // 2 : STL を使うソートの例
MikamiUitOpen 0:bb939e0bc6e2 60 #ifdef MY_SORT
MikamiUitOpen 0:bb939e0bc6e2 61 MySort();
MikamiUitOpen 0:bb939e0bc6e2 62 #endif
MikamiUitOpen 0:bb939e0bc6e2 63
MikamiUitOpen 0:bb939e0bc6e2 64 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 65 // 3 : 実行時ポリモーフィズム
MikamiUitOpen 0:bb939e0bc6e2 66 #ifdef DYNAMIC_POLYMORPHISM
MikamiUitOpen 0:bb939e0bc6e2 67 MyPolyMorphism();
MikamiUitOpen 0:bb939e0bc6e2 68 #endif
MikamiUitOpen 0:bb939e0bc6e2 69
MikamiUitOpen 0:bb939e0bc6e2 70 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 71 // 4 : STL の vecotr の例
MikamiUitOpen 0:bb939e0bc6e2 72 #ifdef STL_VECTOR
MikamiUitOpen 0:bb939e0bc6e2 73 MyVector();
MikamiUitOpen 0:bb939e0bc6e2 74 #endif
MikamiUitOpen 0:bb939e0bc6e2 75
MikamiUitOpen 0:bb939e0bc6e2 76 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 77 // 5 : new 演算子のメモリ割り当てエラーを検出の例
MikamiUitOpen 0:bb939e0bc6e2 78 #ifdef MY_NEW
MikamiUitOpen 0:bb939e0bc6e2 79 MyNew();
MikamiUitOpen 0:bb939e0bc6e2 80 #endif
MikamiUitOpen 0:bb939e0bc6e2 81
MikamiUitOpen 0:bb939e0bc6e2 82 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 83 // 6. function object の例
MikamiUitOpen 0:bb939e0bc6e2 84 #ifdef FUNCTION_OBJECT
MikamiUitOpen 0:bb939e0bc6e2 85 MyFunctionObject();
MikamiUitOpen 0:bb939e0bc6e2 86 #endif
MikamiUitOpen 0:bb939e0bc6e2 87
MikamiUitOpen 0:bb939e0bc6e2 88 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 89 // 7. function pointer の例
MikamiUitOpen 0:bb939e0bc6e2 90 #ifdef FUNCTION_POINTER
MikamiUitOpen 0:bb939e0bc6e2 91 MyFunctionPointer();
MikamiUitOpen 0:bb939e0bc6e2 92 #endif
MikamiUitOpen 0:bb939e0bc6e2 93
MikamiUitOpen 0:bb939e0bc6e2 94 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 95 // 8. クラス内で関数ポインタを使う例
MikamiUitOpen 0:bb939e0bc6e2 96 #ifdef FUNCTION_POINTER_IN_CLASS
MikamiUitOpen 0:bb939e0bc6e2 97 MyFunctionPointerClass();
MikamiUitOpen 0:bb939e0bc6e2 98 #endif
MikamiUitOpen 0:bb939e0bc6e2 99
MikamiUitOpen 0:bb939e0bc6e2 100 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 101 // 9. コンストラクタに渡した Array<> を使う例
MikamiUitOpen 0:bb939e0bc6e2 102 #ifdef PASS_ARRAY_CONSTRUCTOR
MikamiUitOpen 0:bb939e0bc6e2 103 MyPassArrayConstructor();
MikamiUitOpen 0:bb939e0bc6e2 104 #endif
MikamiUitOpen 0:bb939e0bc6e2 105
MikamiUitOpen 0:bb939e0bc6e2 106 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 107 // 10. 異なる型の Array クラスの参照の代入の例
MikamiUitOpen 0:bb939e0bc6e2 108 #ifdef REFERENCE_ARRAY
MikamiUitOpen 0:bb939e0bc6e2 109 ReferenceArray();
MikamiUitOpen 0:bb939e0bc6e2 110 #endif
MikamiUitOpen 0:bb939e0bc6e2 111
MikamiUitOpen 0:bb939e0bc6e2 112 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 113 // 11. ピンの名前に対応するペリフェラルのアドレスを取得
MikamiUitOpen 0:bb939e0bc6e2 114 #ifdef GET_PERIPHERAL_ADDRESS
MikamiUitOpen 0:bb939e0bc6e2 115 PeripheralAddress();
MikamiUitOpen 0:bb939e0bc6e2 116 #endif
MikamiUitOpen 0:bb939e0bc6e2 117
MikamiUitOpen 0:bb939e0bc6e2 118 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 119 // 12. union の使用例
MikamiUitOpen 0:bb939e0bc6e2 120 #ifdef UNION_EXAMPLE
MikamiUitOpen 0:bb939e0bc6e2 121 UnionExample();
MikamiUitOpen 0:bb939e0bc6e2 122 #endif
MikamiUitOpen 0:bb939e0bc6e2 123
MikamiUitOpen 0:bb939e0bc6e2 124 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 125 // 13. 構造体の初期化
MikamiUitOpen 0:bb939e0bc6e2 126 #ifdef INITIALIZE_STRUCT
MikamiUitOpen 0:bb939e0bc6e2 127 InitializeStruct();
MikamiUitOpen 0:bb939e0bc6e2 128 #endif
MikamiUitOpen 0:bb939e0bc6e2 129
MikamiUitOpen 0:bb939e0bc6e2 130 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 131 // 14. 同じ構造で異なる構造体のコピー
MikamiUitOpen 0:bb939e0bc6e2 132 #ifdef STRUCT_COPY
MikamiUitOpen 0:bb939e0bc6e2 133 StructureCopy();
MikamiUitOpen 0:bb939e0bc6e2 134 #endif
MikamiUitOpen 0:bb939e0bc6e2 135
MikamiUitOpen 0:bb939e0bc6e2 136 //------------------------------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 137 // 15. 複合リテラルの使用例
MikamiUitOpen 0:bb939e0bc6e2 138 #ifdef COMPOOUND_LITERAL
MikamiUitOpen 0:bb939e0bc6e2 139 CompoundLiteral();
MikamiUitOpen 0:bb939e0bc6e2 140 #endif
MikamiUitOpen 0:bb939e0bc6e2 141 while (true) {}
MikamiUitOpen 0:bb939e0bc6e2 142 }