STM32 HALライブラリ関数--GPIO

   HAL_GPIO_Init(GPIO_TypeDef * GPIOX、GPIO_InitTypeDef * GPIO_Init)。
   HAL_GPIO_DeInit(GPIO_TypeDef * GPIO_Pinのuint32_t GPIOX、);
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef * GPIO_Pin uint16_t GPIOX、);
 HAL_GPIO_WritePin(GPIO_TypeDef * GPIOX、uint16_t GPIO_Pin、GPIO_PinState PinState)。
 HAL_GPIO_TogglePin(GPIO_TypeDef * GPIO_Pin uint16_t GPIOX、);
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef * GPIO_Pin uint16_t GPIOX、);
HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)。
 HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)。

stm32f7xx_hal_gpio.hからコピーされた上記コンテンツ

 

HALライブラリの初期化

HAL_Init();

 

 

クロックを初期化する(時間厳守原子システムフォルダ機能が得られます)

 

 Stm32_Clock_Init(U32 PLLN、U32 PLLM、U32 pllp、U32 pllq)

  // PLLN:432から64:範囲内のメインPLL周波数逓倍率(PLL逓倍)。

  // PLLM:メインPLL分周率と範囲のオーディオPLL(分割前のPLL):2〜63。

  // pllp:メイン・システム・クロックPLL周波数係数(周波数分割PLL後)、範囲:2,4,6,8(4つしか値!)。

  // pllq:マスタUSB / SDIO /範囲内(分周PLL後)PLL周波数係数のような乱数発生器:2~15。

 

イオクロックはポートを有効にします

__HAL_RCC_GPIOB_CLK_ENABLE()。

 

 

 

GPIOモードの初期化

 HAL_GPIO_Init(GPIO_TypeDef * GPIOX、GPIO_InitTypeDef * GPIO_Init)

GPIOA GPIOB GPIOCなどを埋めるために、最初のパラメータ

第2のパラメータは、構造体であります

typedefは構造体
{
  ピンのuint32_t;       / * !<指定GPIOピンを設定します。
                           このパラメータは、@ref GPIO_pins_defineの任意の値とすることができます* /

  モードのuint32_t;      / * !<指定選択したピンの動作モード。
                           このパラメータは、@ref GPIO_mode_defineの値を指定できます* /

  uint32_tプル;      / * !<指定選択したピンのプルアップまたはプルダウンの活性化。
                           このパラメータは、@ref GPIO_pull_defineの値を指定できます* /

  スピードのuint32_t;     / * !<指定選択したピンのスピード。
                           このパラメータは、@ref GPIO_speed_defineの値を指定できます* /

  代替のuint32_t;  / * !<周辺には、選択したピンに接続されます。
                            このパラメータは、@ref GPIO_Alternate_function_selectionの値とすることができる* / 
} GPIO_InitTypeDef。

速度構造体などの変数は、以下のマクロです。

/ * * @defgroup GPIO_speed_define GPIO速度が定義
  * @brief GPIO出力最大周波数
  * @ {
  * /   
の#define   GPIO_SPEED_FREQ_LOW((のuint32_t)0x00000000U)/ *!<低速* /
 の#define   GPIO_SPEED_FREQ_MEDIUM((のuint32_t)0x00000001U)/ *!<中速* /
 の#define   GPIO_SPEED_FREQ_HIGH((のuint32_t)0x00000002U)/ *!<ファーストスピード* /
 の#define   GPIO_SPEED_FREQ_VERY_HIGH((のuint32_t)0x00000003U)/ *!<ハイスピード* /

他の変数内部マクロ・ボディは以下のように定義され、hal_gpio.hに詳細に記載されたように、本明細書に列挙されていません

 

次に例を示します。

GPIO_InitTypeDef GPIO_Initure; 
GPIO_Initure.Pin = GPIO_PIN_0。            // PB0 
GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP。    // 推挽输出 
GPIO_Initure.Pull = GPIO_PULLUP。                            // 上拉 
GPIO_Initure.Speed = GPIO_SPEED_HIGH。                // 高速 
HAL_GPIO_Init(GPIOBとGPIO_Initure)。

 

 

ODRレジスタ

 HAL_GPIO_TogglePin(GPIO_Pin uint16_t GPIO_TypeDef * GPIOX、);

 

 

BSRRレジスタ

 HAL_GPIO_WritePin(GPIO_TypeDef * GPIOX、uint16_t GPIO_Pin、GPIO_PinState PinState)。

それ以降の引数PinState 2つだけのメンバー:GPIO_PIN_SET GPIO_PIN_RESET

 

 

ODR BSRRレジスタとの違い:

BSRRレジスタの場合は、あなたが書く0を、その後、IOポートレベルに全く影響です。
私たちは、関連するビットがセットされ、IOポートレベルを設定する1することができます。ODRレジスタ、我々はIOポートのレベルを設定したい、我々はODRレジスタの値を読み出すための最初の必要性は、
その後、全体ODRレジスタは、我々は、セットまたは何らかの目的IOポート、およびBSRRレジスタに到達するために再割り当てあなたは読む必要はありませんが、マルチタスクリアルタイム・オペレーティング・システムに大きな役割を果たしている、直接設定することができます。

 

 

読むIOポートレベル

GPIO_PinState HAL_GPIO_ReadPin(GPIO_Pin uint16_t GPIO_TypeDef * GPIOX、); 

 

 

GPIOは、我々が最初にここで説明した機能を関連しました。IO手順は非常にシンプルですが、ここでは一般的にする要約を、手順は次のとおりです。 

1)クロックは、IOポートをイネーブルに、通話機能__HAL_RCC_GPIOX_CLK_ENABLE(ここでX = A〜K)。 

2)IO初期化パラメータ。()関数HAL_GPIO_Initを呼び出します。 

3)入力と出力IOオペレーション。操作のIO方法は、上記の方法を説明するために私たちにあります。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   HAL_GPIO_Init(GPIO_TypeDef * GPIOX、GPIO_InitTypeDef * GPIO_Init)。

おすすめ

転載: www.cnblogs.com/qifeng1024/p/12025154.html