出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数. このライブラリを登録した際のプログラム: Demo_SetOutputPortType. Global functions for setting the output port bit open-drain or push-pull.
Dependents: Demo_SetOutputPortType Mbed2_ConnectTestAll
SetOutputPortType.hpp@5:946c15867578, 2019-12-17 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Dec 17 01:58:00 2019 +0000
- Revision:
- 5:946c15867578
- Parent:
- 4:0f2bef62434a
6
Who changed what in which revision?
User | Revision | Line number | New 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 |