出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数の使用例. Example of global functions for setting the output port bits as open-drain or push-pull.

Dependencies:   mbed UIT_SetOutputPortType

main.cpp

Committer:
MikamiUitOpen
Date:
2015-09-04
Revision:
2:966a8ad956d3
Parent:
1:5bf39be14d61
Child:
3:f9dc19059c3b

File content as of revision 2:966a8ad956d3:

//---------------------------------------------------------------------------------
// 出力ポートを,オープンドレインまたはプッシュプルに設定するグローバル関数の使用例
// (Example of global functions for setting the output port bit
//  as open-drain or push-pull)
//
// 2015/09/04, Copyright (c) 2015 MIKAMI, Naoki
//---------------------------------------------------------------------------------

#include "SetOutputPortType.hpp"
using namespace Mikami;

BusOut bus_(D2, D3, D4, D5, D6, D7, D8);
DigitalIn uButton_(USER_BUTTON);

// ユーザ・ボタン(青のボタン)を押すまで待つ関数 
void WaitButton(char str[])
{
    printf(str);
    printf("\r\nPush blue button");
    while (uButton_ == 1) {}
    wait(0.5);
}

int main()
{
// MODER    I/O ポートを,入力/汎用出力/代替え機能/アナログに設定するレジスタ
// PUPDR    I/O ポートを,プルアップ,プルダウン,プルアップ・プルダウンなしに設定するレジスタ
// OTYPER   出力のタイプをプッシュプル/オープンドレインに設定するレジスタ
    printf("\r\n\nGPIOB mode Reg.: 0x%08x", GPIOB->MODER);
    printf("\r\nGPIOB pull-up/pull-down Reg.: 0x%08x", GPIOB->PUPDR);
    
    bus_ = 0x7F;
    SetOpenDrain(D2, D3, D4, D5, D6, D7, D8);
    printf("\r\n\nGPIOB output type Reg.: 0x%04x", GPIOB->OTYPER);
    printf("\r\nGPIOA output type Reg.: 0x%04x", GPIOA->OTYPER);
    WaitButton("\r\nD2 - D8: open drain\r\n");
    
    SetPushPull(D2, D3, D4, D5, D6, D7, D8);
    printf("\r\nGPIOB output type Reg.: 0x%04x", GPIOB->OTYPER);
    printf("\r\nGPIOA output type Reg.: 0x%04x", GPIOA->OTYPER);
    WaitButton("\r\nD2 - D8: push-pull\r\n");

    SetOpenDrain(D2);
    printf("\r\nGPIOB output type Reg.: 0x%04x", GPIOB->OTYPER);
    printf("\r\nGPIOA output type Reg.: 0x%04x", GPIOA->OTYPER);
    WaitButton("\r\nD2: open drain\r\n");
    
    SetOpenDrain(D3, D4);
    printf("\r\nGPIOB output type Reg.: 0x%04x", GPIOB->OTYPER);
    printf("\r\nGPIOA output type Reg.: 0x%04x", GPIOA->OTYPER);
    printf("\r\nD2 - D4: open drain\r\n");
    
    while (true);
}