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

Dependents:   Demo_SetOutputPortType Mbed2_ConnectTestAll

Committer:
MikamiUitOpen
Date:
Tue Dec 17 01:58:00 2019 +0000
Revision:
5:946c15867578
Parent:
4:0f2bef62434a
6

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 5:946c15867578 20 // 2019/12/17, Copyright (c) 2019 MIKAMI, Naoki
MikamiUitOpen 4:0f2bef62434a 21 //------------------------------------------------------------------------------
MikamiUitOpen 0:7b86a8a8aabd 22
MikamiUitOpen 0:7b86a8a8aabd 23 #include "mbed.h"
MikamiUitOpen 0:7b86a8a8aabd 24
MikamiUitOpen 5:946c15867578 25 #ifndef SET_OUTPUT_PORT_TYPE_HPP
MikamiUitOpen 5:946c15867578 26 #define SET_OUTPUT_PORT_TYPE_HPP
MikamiUitOpen 5:946c15867578 27
MikamiUitOpen 0:7b86a8a8aabd 28 namespace Mikami
MikamiUitOpen 0:7b86a8a8aabd 29 {
MikamiUitOpen 3:ff33bd585670 30 // 出力ポートをオープンドレインに設定する
MikamiUitOpen 3:ff33bd585670 31 void SetOpenDrain(PinName p0, PinName p1 = NC, PinName p2 = NC,
MikamiUitOpen 3:ff33bd585670 32 PinName p3 = NC, PinName p4 = NC, PinName p5 = NC,
MikamiUitOpen 3:ff33bd585670 33 PinName p6 = NC, PinName p7 = NC, PinName p8 = NC,
MikamiUitOpen 3:ff33bd585670 34 PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
MikamiUitOpen 3:ff33bd585670 35 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
MikamiUitOpen 3:ff33bd585670 36 PinName p15 = NC)
MikamiUitOpen 0:7b86a8a8aabd 37 {
MikamiUitOpen 3:ff33bd585670 38 PinName pins[16] = { p0, p1, p2, p3, p4, p5, p6, p7,
MikamiUitOpen 3:ff33bd585670 39 p8, p9, p10, p11, p12, p13, p14, p15};
MikamiUitOpen 2:faa854cf5f0e 40
MikamiUitOpen 0:7b86a8a8aabd 41 for (int n=0; n<16; n++)
MikamiUitOpen 0:7b86a8a8aabd 42 {
MikamiUitOpen 0:7b86a8a8aabd 43 if (pins[n] == NC) break;
MikamiUitOpen 3:ff33bd585670 44 uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
MikamiUitOpen 3:ff33bd585670 45 ((GPIO_TypeDef *)address)->OTYPER |= 1 << STM_PIN(pins[n]);
MikamiUitOpen 0:7b86a8a8aabd 46 }
MikamiUitOpen 0:7b86a8a8aabd 47 }
MikamiUitOpen 0:7b86a8a8aabd 48
MikamiUitOpen 3:ff33bd585670 49 // 出力ポートをプッシュプルに設定する
MikamiUitOpen 3:ff33bd585670 50 void SetPushPull(PinName p0, PinName p1 = NC, PinName p2 = NC,
MikamiUitOpen 3:ff33bd585670 51 PinName p3 = NC, PinName p4 = NC, PinName p5 = NC,
MikamiUitOpen 3:ff33bd585670 52 PinName p6 = NC, PinName p7 = NC, PinName p8 = NC,
MikamiUitOpen 3:ff33bd585670 53 PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
MikamiUitOpen 3:ff33bd585670 54 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC,
MikamiUitOpen 3:ff33bd585670 55 PinName p15 = NC)
MikamiUitOpen 0:7b86a8a8aabd 56 {
MikamiUitOpen 3:ff33bd585670 57 PinName pins[16] = { p0, p1, p2, p3, p4, p5, p6, p7,
MikamiUitOpen 3:ff33bd585670 58 p8, p9, p10, p11, p12, p13, p14, p15};
MikamiUitOpen 2:faa854cf5f0e 59
MikamiUitOpen 0:7b86a8a8aabd 60 for (int n=0; n<16; n++)
MikamiUitOpen 0:7b86a8a8aabd 61 {
MikamiUitOpen 0:7b86a8a8aabd 62 if (pins[n] == NC) break;
MikamiUitOpen 3:ff33bd585670 63 uint32_t address = (STM_PORT(pins[n]) << 10) + GPIOA_BASE;
MikamiUitOpen 3:ff33bd585670 64 ((GPIO_TypeDef *)address)->OTYPER &= ~(1 << STM_PIN(pins[n]));
MikamiUitOpen 0:7b86a8a8aabd 65 }
MikamiUitOpen 0:7b86a8a8aabd 66 }
MikamiUitOpen 0:7b86a8a8aabd 67 }
MikamiUitOpen 5:946c15867578 68 #endif // SET_OUTPUT_PORT_TYPE_HPP