いろいろなテクニック.Nucleo と DISCO-F746 用.
Dependencies: Array_Matrix mbed
main.cpp@0:bb939e0bc6e2, 2017-10-15 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sun Oct 15 11:41:48 2017 +0000
- Revision:
- 0:bb939e0bc6e2
- Child:
- 1:bbb9f0c3e523
1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |