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

Dependencies:   Array_Matrix mbed

Committer:
MikamiUitOpen
Date:
Wed Apr 10 06:32:33 2019 +0000
Revision:
1:bbb9f0c3e523
Parent:
0:bb939e0bc6e2
2

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