IoT Lora モジュールの入門から習熟まで (4) 一部のポートの初期化

I.はじめに

        プログラムの設計と開発には不確実性があるため、多くの場合、いくつかの特定のピンを初期化し、ピン レベルのステータスを読み取ったり、ピンに High および Low レベルを出力したりする必要があります。

2. コードの実装

        ポートの初期化ステートメントをすばやく見つけます。

        まず、board.c ファイルを見つけます。下図の位置に、LED ライトのポートに関する初期化ステートメントが表示されます。

        Go Definition 関数を使用するか、gpio.c ファイルを直接検索すると、具体的な実装方法を確認できます。

/*
 / _____)             _              | |
( (____  _____ ____ _| |_ _____  ____| |__
 \____ \| ___ |    (_   _) ___ |/ ___)  _ \
 _____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
    (C)2013 Semtech

Description: Generic GPIO driver implementation

Comment: Relies on the specific board GPIO implementation as well as on
         IO expander driver implementation if one is available on the target
         board.

License: Revised BSD License, see LICENSE.TXT file include in the project

Maintainer: Miguel Luis and Gregory Cristian
*/
#include "board.h"

#include "gpio-board.h"


void GpioInit( Gpio_t *obj, PinNames pin, PinModes mode,  PinConfigs config, PinTypes type, uint32_t value )
{
	GpioMcuInit( obj, pin, mode, config, type, value );
}

void GpioSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler )
{
    GpioMcuSetInterrupt( obj, irqMode, irqPriority, irqHandler );
}

void GpioRemoveInterrupt( Gpio_t *obj )
{
    GpioMcuRemoveInterrupt( obj );
}

void GpioWrite( Gpio_t *obj, uint32_t value )
{
    GpioMcuWrite( obj, value );
}

void GpioToggle( Gpio_t *obj )
{
    GpioMcuToggle( obj );
}

uint32_t GpioRead( Gpio_t *obj )
{
    return GpioMcuRead( obj );
}

        今回主に使用するメソッドはGpioInit()です。

        このメソッドには 5 つのパラメータがあるので、1 つずつ展開してみましょう。

        パラメータ 1: Gpio_t *obj: これを使用するときは、最初に Gpio_t タイプの変数を作成し、後で操作できるように初期化中にそれを渡す必要があります。

        パラメータ 2: PinNames pin: ここでは、PB_2 など、操作する必要があるポートを入力します。

        パラメータ 3: PinModes モード: ここでは、PIN_INPUT (入力モード)、PIN_OUTPUT (出力モード) という 2 つの一般的なタイプを入力できます。PIN_ALTERNATE_FCT と PIN_ANALOGIC は、当面は注意する必要はありません。

        パラメータ 4: PinConfigs config: ここでは通常、PIN_PUSH_PULL (プッシュプル) と書きます。

        パラメータ 5: PinTypes タイプ: ここでは、必要に応じて PIN_NO_PULL、PIN_PULL_UP、PIN_PULL_DOWN を選択できます。

        パラメータ 6: 0 を入力するだけです。

        コード例:

        以下に PB_2 のレベルを読み出し、LED1 を Low レベルで点灯する動作を示します。

 

Gpio_t Device;
int main( void )
{
    Init();
		GpioInit(&Device,PB_2,PIN_INPUT,PIN_PUSH_PULL,PIN_PULL_UP,0);
    while( 1 )
    {
				if(GpioRead(&Device)==0)
					GpioWrite(&Led1,0);
				else
					GpioWrite(&Led1,1);
    }
}

おすすめ

転載: blog.csdn.net/qq_39724355/article/details/131145704