衡阳派盒市场营销有限公司

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

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

3天內不再提示

解析STM32的庫函數-1

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

一、引言

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

二、正題

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

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 的程序開發中經常使用到的 GPIO 初始化程序段,其功能是將 GPIOA.4 口 初始化為推挽輸出狀態,并最大翻轉速率為 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 是一個結構體類型同義字,其功能是定義一個結構體,該結 構體有三個成員分別是 u16 類型的 GPIO_Pin、GPIOSpeed_TypeDef 類型的 GPIO_Speed和 GPIOMode_TypeDef 類 型 的 GPIO_Mode 。繼 續 探 查 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 已經定義為 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 設備的工作模式)。至此對程序段一的O1 解析可以做一個總結:該行定義一個結構體類型的變量 GPIO_InitStructure,并且該結構體有 3 個成員,分別為 GPIO_Pin、GPIO_Speed 和 GPIO_Mode,并且 GPIO_Pin 表示 GPIO 設備引腳 GPIO_Speed 表示 GPIO 設備速率和 GPIO_Mode 表示 GPIO 設備工作模式。

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

    關注

    31

    文章

    5363

    瀏覽量

    121158
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357559
  • 固件庫
    +關注

    關注

    2

    文章

    97

    瀏覽量

    14987
收藏 人收藏

    評論

    相關推薦

    解析STM32庫函數——獻給新手

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

    解析STM32庫函數

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

    解析STM32庫函數

    解析STM32庫函數
    發表于 05-12 09:35

    解析STM32庫函數(轉)

    解析STM32庫函數(轉) 獻給新手
    發表于 11-19 08:39

    STM32開發指南V1.0 庫函數版本1

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

    STM32庫函數代碼自動生成器V1.2

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

    STM32庫函數代碼自動生成器正式版

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

    STM32 IAR的庫函數資料免費下載

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

    STM32F4 HAL庫函數說明下載

    STM32F4 HAL庫函數說明下載
    發表于 05-26 09:27 ?78次下載

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

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

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

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

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

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

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

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

    STM32庫函數開發-GPIO

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

    STM32庫函數SystemInit()詳解

    STM32庫函數SystemInit()詳解
    的頭像 發表于 09-18 15:45 ?4254次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>庫函數</b>SystemInit()詳解
    A8娱乐城官网| 百家乐官网洗码全讯网| 永寿县| 百家乐官网赢钱秘籍鹰| 百家乐波音平台路单| 威尼斯人娱乐城代理合作| 博彩娱乐城| 百家乐官网规律打法| 百家乐注册彩金| 皇冠现金网导航| 新澳门百家乐官网娱乐城| 网上百家乐看牌器| 大发888娱乐捕鱼游戏| 百家乐官网娱乐城信息| 百家乐赢的方法| 黄金城百家乐下载| 库车县| 手机百家乐官网能兑换现金棋牌游戏| 云鼎百家乐代理| 古田县| 百家乐tt娱乐城| 大发888开户注册网站| E世博百家乐官网娱乐城| 百家乐真人百家乐赌博| 简阳市| 百家乐游戏算牌| 大赢家| 百家百家乐官网视频游戏世界| 大发888娱乐城送白菜| 百家乐官网的注码技巧| 百家乐高手论坛| 网上百家乐官网危险| 百家乐防伪筹码套装| 玉树县| 百家乐合理的投注法| 百家乐技巧| 百家乐技术下载| 葡京娱乐城姚记| 罗盘24山图| 百家乐庄闲偏差有多大| 乐至县|