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

Dependents:   Demo_SetOutputPortType Mbed2_ConnectTestAll

Committer:
MikamiUitOpen
Date:
Sat Sep 29 04:46:08 2018 +0000
Revision:
4:0f2bef62434a
Parent:
3:ff33bd585670
Child:
5:946c15867578
5

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 4:0f2bef62434a 1 //------------------------------------------------------------------------------
MikamiUitOpen 3:ff33bd585670 2 // 出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数
MikamiUitOpen 3:ff33bd585670 3 // (Global functions for setting the output port bit open-drain or push-pull)
MikamiUitOpen 0:7b86a8a8aabd 4 // SetOpenDrain() オープンドレインに設定 (Set open-drain)
MikamiUitOpen 0:7b86a8a8aabd 5 // SetPushPull() プッシュプルに設定 (Set push-pull)
MikamiUitOpen 3:ff33bd585670 6 // Nucleo 用(For Nucleo)
MikamiUitOpen 0:7b86a8a8aabd 7 //
MikamiUitOpen 3:ff33bd585670 8 // "PA_0", "PB_0", "PC_0" などの定義:PinNames.h
MikamiUitOpen 3:ff33bd585670 9 // "PA_0", "PB_0", "PC_0", etc. are defined in PinNames.h.
MikamiUitOpen 0:7b86a8a8aabd 10 //
MikamiUitOpen 3:ff33bd585670 11 // この関数を使う前に,使用する GPIO ポートは使える状態に設定しておくこと
MikamiUitOpen 3:ff33bd585670 12 // (Before using this function, the GPIO port must be enabled.)
MikamiUitOpen 0:7b86a8a8aabd 13 //
MikamiUitOpen 3:ff33bd585670 14 // PinName 型変数の 4 ~ 7 ビット:ポート番号(0 = A, 1 = B, ・・・・・)
MikamiUitOpen 3:ff33bd585670 15 // PinName 型変数の 0 ~ 3 ビット:ピン番号(0 ~ 15)
MikamiUitOpen 3:ff33bd585670 16 //
MikamiUitOpen 4:0f2bef62434a 17 // STM_PORT(), STM_PIN() は
MikamiUitOpen 4:0f2bef62434a 18 // mbed\TARGET_NUCLEO_F446RE\TARGET_STM\PinNamesTypes.h 参照
MikamiUitOpen 4:0f2bef62434a 19 //
MikamiUitOpen 4:0f2bef62434a 20 // 2018/09/29, Copyright (c) 2018 MIKAMI, Naoki
MikamiUitOpen 4:0f2bef62434a 21 //------------------------------------------------------------------------------
MikamiUitOpen 0:7b86a8a8aabd 22
MikamiUitOpen 0:7b86a8a8aabd 23 #include "mbed.h"
MikamiUitOpen 0:7b86a8a8aabd 24
MikamiUitOpen 0:7b86a8a8aabd 25 namespace Mikami
MikamiUitOpen 0:7b86a8a8aabd 26 {
MikamiUitOpen 3:ff33bd585670 27 // 出力ポートをオープンドレインに設定する
MikamiUitOpen 3:ff33bd585670 28 void SetOpenDrain(PinName p0, PinName p1 = NC, PinName p2 = NC,
MikamiUitOpen 3:ff33bd585670 29 PinName p3 = NC, PinName p4 = NC, PinName p5 = NC,
MikamiUitOpen 3:ff33bd585670 30 PinName p6 = NC, PinName p7 = NC, PinName p8 = NC,
MikamiUitOpen 3:ff33bd585670 31 PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
MikamiUitOpen 3:ff33bd585670 32 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
MikamiUitOpen 3:ff33bd585670 33 PinName p15 = NC)
MikamiUitOpen 0:7b86a8a8aabd 34 {
MikamiUitOpen 3:ff33bd585670 35 PinName pins[16] = { p0, p1, p2, p3, p4, p5, p6, p7,
MikamiUitOpen 3:ff33bd585670 36 p8, p9, p10, p11, p12, p13, p14, p15};
MikamiUitOpen 2:faa854cf5f0e 37
MikamiUitOpen 0:7b86a8a8aabd 38 for (int n=0; n<16; n++)
MikamiUitOpen 0:7b86a8a8aabd 39 {
MikamiUitOpen 0:7b86a8a8aabd 40 if (pins[n] == NC) break;
MikamiUitOpen 3:ff33bd585670 41 uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
MikamiUitOpen 3:ff33bd585670 42 ((GPIO_TypeDef *)address)->OTYPER |= 1 << STM_PIN(pins[n]);
MikamiUitOpen 0:7b86a8a8aabd 43 }
MikamiUitOpen 0:7b86a8a8aabd 44 }
MikamiUitOpen 0:7b86a8a8aabd 45
MikamiUitOpen 3:ff33bd585670 46 // 出力ポートをプッシュプルに設定する
MikamiUitOpen 3:ff33bd585670 47 void SetPushPull(PinName p0, PinName p1 = NC, PinName p2 = NC,
MikamiUitOpen 3:ff33bd585670 48 PinName p3 = NC, PinName p4 = NC, PinName p5 = NC,
MikamiUitOpen 3:ff33bd585670 49 PinName p6 = NC, PinName p7 = NC, PinName p8 = NC,
MikamiUitOpen 3:ff33bd585670 50 PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
MikamiUitOpen 3:ff33bd585670 51 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
MikamiUitOpen 3:ff33bd585670 52 PinName p15 = NC)
MikamiUitOpen 0:7b86a8a8aabd 53 {
MikamiUitOpen 3:ff33bd585670 54 PinName pins[16] = { p0, p1, p2, p3, p4, p5, p6, p7,
MikamiUitOpen 3:ff33bd585670 55 p8, p9, p10, p11, p12, p13, p14, p15};
MikamiUitOpen 2:faa854cf5f0e 56
MikamiUitOpen 0:7b86a8a8aabd 57 for (int n=0; n<16; n++)
MikamiUitOpen 0:7b86a8a8aabd 58 {
MikamiUitOpen 0:7b86a8a8aabd 59 if (pins[n] == NC) break;
MikamiUitOpen 3:ff33bd585670 60 uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
MikamiUitOpen 3:ff33bd585670 61 ((GPIO_TypeDef *)address)->OTYPER &= ~(1 << STM_PIN(pins[n]));
MikamiUitOpen 0:7b86a8a8aabd 62 }
MikamiUitOpen 0:7b86a8a8aabd 63 }
MikamiUitOpen 0:7b86a8a8aabd 64 }
MikamiUitOpen 4:0f2bef62434a 65