出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数. このライブラリを登録した際のプログラム: Demo_SetOutputPortType. Global functions for setting the output port bit open-drain or push-pull.

Dependents:   Demo_SetOutputPortType Mbed2_ConnectTestAll

Revision:
3:ff33bd585670
Parent:
2:faa854cf5f0e
Child:
4:0f2bef62434a
--- a/SetOutputPortType.hpp	Fri Oct 21 07:54:41 2016 +0000
+++ b/SetOutputPortType.hpp	Fri May 19 13:42:00 2017 +0000
@@ -1,66 +1,61 @@
 //---------------------------------------------------------------------------------------
-// 出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数
-// (Global functions for setting the output port bit open-drain or push-pull)
+//  出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数
+//  (Global functions for setting the output port bit open-drain or push-pull)
 //      SetOpenDrain()      オープンドレインに設定 (Set open-drain)
 //      SetPushPull()       プッシュプルに設定 (Set push-pull)
-// Nucleo 用(For Nucleo)
+//  Nucleo 用(For Nucleo)
 //
-// "PA_0", "PB_0", "PC_0" などの定義は Nucleo-F401 の場合下記のヘッダ・ファイルを参照のこと
-// "....TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_STM32F4/TARGET_NUCLEO_F401RE/PinNames.h"
+//  "PA_0", "PB_0", "PC_0" などの定義:PinNames.h
+//  "PA_0", "PB_0", "PC_0", etc. are defined in PinNames.h.
 //
-//      PinName型変数の上位4ビット:ポート番号(0 = A, 1 = B, ・・・・・)
-//      PinName型変数の下位4ビット:ピン番号(0 ~ 15)
+//  この関数を使う前に,使用する GPIO ポートは使える状態に設定しておくこと
+//  (Before using this function, the GPIO port must be enabled.)
 //
-// 2016/10/21, Copyright (c) 2016 MIKAMI, Naoki
+//      PinName 型変数の 4 ~ 7 ビット:ポート番号(0 = A, 1 = B, ・・・・・)
+//      PinName 型変数の 0 ~ 3 ビット:ピン番号(0 ~ 15)
+//
+//  2017/05/19, Copyright (c) 2017 MIKAMI, Naoki
 //---------------------------------------------------------------------------------------
 
 #include "mbed.h"
 
 namespace Mikami
 {
-    // 一つの出力ポートをオープンドレインに設定する
-    void SetOpenDrain(PinName pin)
+    // 出力ポートをオープンドレインに設定する
+    void SetOpenDrain(PinName p0,       PinName p1  = NC, PinName p2  = NC,
+                      PinName p3  = NC, PinName p4  = NC, PinName p5  = NC,
+                      PinName p6  = NC, PinName p7  = NC, PinName p8  = NC,
+                      PinName p9  = NC, PinName p10 = NC, PinName p11 = NC,
+                      PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
+                      PinName p15 = NC)
     {
-        uint32_t address = (STM_PORT(pin) << 10) + GPIOA_BASE;
-        ((GPIO_TypeDef *)address)->OTYPER |= 1 << STM_PIN(pin);
-    }
-
-    // 複数の出力ポートをオープンドレインに設定する
-    void SetOpenDrain(PinName p0, PinName p1, PinName p2 = NC, PinName p3 = NC,
-                      PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
-                      PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
-                      PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC)
-    {
-        PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7,
-                            p8, p9, p10, p11, p12, p13, p14, p15};
+        PinName pins[16] = { p0,  p1,  p2,  p3,  p4,  p5,  p6,  p7,
+                             p8,  p9, p10, p11, p12, p13, p14, p15};
 
         for (int n=0; n<16; n++)
         {
             if (pins[n] == NC) break;
-            SetOpenDrain(pins[n]);
+            uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
+            ((GPIO_TypeDef *)address)->OTYPER |= 1 << STM_PIN(pins[n]);
         }
     }
 
-    // 一つの出力ポートをプッシュプルに設定する
-    void SetPushPull(PinName pin)
+    // 出力ポートをプッシュプルに設定する
+    void SetPushPull(PinName p0,       PinName p1  = NC, PinName p2  = NC,
+                     PinName p3  = NC, PinName p4  = NC, PinName p5  = NC,
+                     PinName p6  = NC, PinName p7  = NC, PinName p8  = NC,
+                     PinName p9  = NC, PinName p10 = NC, PinName p11 = NC,
+                     PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
+                     PinName p15 = NC)
     {
-        uint32_t address = (STM_PORT(pin) << 10) + GPIOA_BASE;
-        ((GPIO_TypeDef *)address)->OTYPER &= ~(1 << STM_PIN(pin));
-    }
-
-    // 複数の出力ポートをプッシュプルに設定する
-    void SetPushPull(PinName p0, PinName p1, PinName p2 = NC, PinName p3 = NC,
-                     PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
-                     PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
-                     PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC)
-    {
-        PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7,
-                            p8, p9, p10, p11, p12, p13, p14, p15};
+        PinName pins[16] = { p0,  p1,  p2,  p3,  p4,  p5,  p6,  p7,
+                             p8,  p9, p10, p11, p12, p13, p14, p15};
 
         for (int n=0; n<16; n++)
         {
             if (pins[n] == NC) break;
-            SetPushPull(pins[n]);
+            uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
+            ((GPIO_TypeDef *)address)->OTYPER &= ~(1 << STM_PIN(pins[n]));
         }
     }
 }