0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析STM32的庫函數(shù)-1

汽車電子技術(shù) ? 來源:嵌入式悅翔園 ? 作者: JamesBin ? 2023-02-17 15:27 ? 次閱讀

一、引言

我們在學習32的過程中,固件庫是個必不可少的東西,因為程序開發(fā)不再是從寄存器層次起始,而要首先去熟悉 STM32 所提供的固件庫。那是否一定要使用固件庫呢?當然不是。但 STM32 微控制器的寄存器規(guī)模可不 是常見的 8 位單片機可以比擬,若自己細細琢磨各個寄存器的意義,必然會消耗相當?shù)臅r間, 并且對于程序后續(xù)的維護,升級來說也會增加資源的消耗。

二、正題

以最常用的 GPIO 設(shè)備的初始化函數(shù)為例,如下程序段一:

GPIO_InitTypeDef GPIO_InitStructure; ○1
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; ○2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ○3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; ○4
GPIO_Init(GPIOA , &GPIO_InitStructure); ○5

這是一個在 STM32 的程序開發(fā)中經(jīng)常使用到的 GPIO 初始化程序段,其功能是將 GPIOA.4 口 初始化為推挽輸出狀態(tài),并最大翻轉(zhuǎn)速率為 50MHz。下面逐一分解:

首先是O1 ,該語句顯然定義了一個 GPIO_InitTypeDef 類型的變量,名為 GPIO_InitStructure,找出GPIO_InitTypeDef的原型位于

“stm32f10x_gpio.h”文件,原型為如下:

typedef struct
{
u16 GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;

由此可知 GPIO_InitTypeDef 是一個結(jié)構(gòu)體類型同義字,其功能是定義一個結(jié)構(gòu)體,該結(jié) 構(gòu)體有三個成員分別是 u16 類型的 GPIO_Pin、GPIOSpeed_TypeDef 類型的 GPIO_Speed和 GPIOMode_TypeDef 類 型 的 GPIO_Mode 。繼 續(xù) 探 查 GPIOSpeed_TypeDef 和GPIOMode_TypeDef 類型,在“stm32f10x_gpio.h”文件中找到對 GPIOSpeed_TypeDef 的 定義:

typedef enum
{
 GPIO_Speed_10MHz = 1,
 GPIO_Speed_2MHz,
 GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;

則可知 GPIOSpeed_TypeDef 枚舉類型同一只,其功能是定義一個枚舉類型變量,該變量 可表示 GPIO_Speed_10MHz、GPIO_Speed_2MHz 和 GPIO_Speed_50MHz 三個含義(其中GPIO_Speed_10MHz 已經(jīng)定義為 1,讀者必須知道 GPIO_Speed_2MHz 則依次被編譯器賦予 2,而 GPIO_Speed_50MHz 為 3)。同樣也在“stm32f10x_gpio.h”文件中找到對 GPIOMode_TypeDef 的定義:

typedef enum
{
GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
 GPIO_Mode_IPD = 0x28,
 GPIO_Mode_IPU = 0x48,
 GPIO_Mode_Out_OD = 0x14,
 GPIO_Mode_Out_PP = 0x10,
 GPIO_Mode_AF_OD = 0x1C,
 GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

這同樣是一個枚舉類型同義字,其成員有 GPIO_Mode_AIN、GPIO_Mode_AF_OD 等(也 可以輕易判斷出這表示 GPIO 設(shè)備的工作模式)。至此對程序段一的O1 解析可以做一個總結(jié):該行定義一個結(jié)構(gòu)體類型的變量 GPIO_InitStructure,并且該結(jié)構(gòu)體有 3 個成員,分別為 GPIO_Pin、GPIO_Speed 和 GPIO_Mode,并且 GPIO_Pin 表示 GPIO 設(shè)備引腳 GPIO_Speed 表示 GPIO 設(shè)備速率和 GPIO_Mode 表示 GPIO 設(shè)備工作模式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354291
  • 固件庫
    +關(guān)注

    關(guān)注

    2

    文章

    97

    瀏覽量

    14918
收藏 人收藏

    評論

    相關(guān)推薦

    解析STM32庫函數(shù)——獻給新手

    ,必然會消耗相當?shù)臅r間,并且對于程序后續(xù)的維護,升級來說也會增加資源的消耗。對于當前“時間就是金錢”的行業(yè)競爭環(huán)境,無疑使用庫函數(shù)進行STM32的產(chǎn)品開發(fā)是更好的選擇。本文將通過一個簡單的例子對STM32
    發(fā)表于 10-21 14:16

    解析STM32庫函數(shù)

    本帖最后由 zax1234 于 2012-10-29 22:50 編輯 解析STM32庫函數(shù) 意法半導體在推出 STM32 微控制器之初,也同時提供了一套完整細致的固件開發(fā)包,
    發(fā)表于 10-29 22:36

    解析STM32庫函數(shù)

    解析STM32庫函數(shù)
    發(fā)表于 05-12 09:35

    解析STM32庫函數(shù)(轉(zhuǎn))

    解析STM32庫函數(shù)(轉(zhuǎn)) 獻給新手
    發(fā)表于 11-19 08:39

    STM32開發(fā)指南V1.0 庫函數(shù)版本1

    STM32開發(fā)指南V1.0 庫函數(shù)版本》完美標簽part1
    發(fā)表于 05-30 14:20 ?0次下載

    STM32庫函數(shù)代碼自動生成器V1.2

    stm32庫函數(shù)代碼自動生成器是STM32學習的小工具。 stm32庫函數(shù)代碼自動生成器可以根據(jù)你的配置生成相應(yīng)的
    發(fā)表于 06-17 17:55 ?0次下載

    STM32庫函數(shù)代碼自動生成器正式版

    STM32庫函數(shù)代碼自動生成器正式版 STM32庫函數(shù)代碼自動生成器正式版
    發(fā)表于 07-25 18:52 ?0次下載

    STM32 IAR的庫函數(shù)資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是STM32 IAR的庫函數(shù)資料免費下載。
    發(fā)表于 03-27 09:48 ?43次下載
    <b class='flag-5'>STM32</b> IAR的<b class='flag-5'>庫函數(shù)</b>資料免費下載

    STM32F4 HAL庫函數(shù)說明下載

    STM32F4 HAL庫函數(shù)說明下載
    發(fā)表于 05-26 09:27 ?75次下載

    STM32F1開發(fā)指南-庫函數(shù)版本_V3.3(上)

    STM32F1開發(fā)指南-庫函數(shù)版本_V3.3(上)
    發(fā)表于 09-28 09:34 ?0次下載

    STM32F1開發(fā)指南-庫函數(shù)版本_V3.3(下)

    STM32F1開發(fā)指南-庫函數(shù)版本_V3.3(下)
    發(fā)表于 09-28 09:36 ?0次下載

    stm32下標準庫函數(shù)與HAL庫函數(shù)編程方式的差異

    stm32下標準庫函數(shù)與HAL庫函數(shù)編程方式的差異標準庫函數(shù)HAL庫函數(shù)標準庫函數(shù)與HAL
    發(fā)表于 12-09 14:21 ?15次下載
    <b class='flag-5'>stm32</b>下標準<b class='flag-5'>庫函數(shù)</b>與HAL<b class='flag-5'>庫函數(shù)</b>編程方式的差異

    基于標準庫函數(shù)與基于HAL庫函數(shù)stm32編程方式對比

    以實例程序(串口通信),分析基于標準庫函數(shù)與基于HAL庫函數(shù)stm32編程方式的差異一、基于標準庫函數(shù)stm32編程方式二、基于HAL
    發(fā)表于 12-28 19:09 ?30次下載
    基于標準<b class='flag-5'>庫函數(shù)</b>與基于HAL<b class='flag-5'>庫函數(shù)</b>的<b class='flag-5'>stm32</b>編程方式對比

    STM32庫函數(shù)開發(fā)-GPIO

    2021-01-11 學習日志STM32f1庫函數(shù)開發(fā)學習實戰(zhàn)一 · I/O口1. 文件夾結(jié)構(gòu)2. 配置細節(jié) · 從寄存器到庫函數(shù)3. 跑馬燈4. 按鍵輸入
    發(fā)表于 01-13 16:17 ?14次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數(shù)</b>開發(fā)-GPIO

    STM32庫函數(shù)SystemInit()詳解

    STM32庫函數(shù)SystemInit()詳解
    的頭像 發(fā)表于 09-18 15:45 ?3757次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數(shù)</b>SystemInit()詳解