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

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

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

【藍橋杯物聯(lián)網(wǎng)】第三章 stm32l0xx_hal_gpio.c的常見函數(shù)

撞上電子 ? 2021-08-09 10:06 ? 次閱讀
ca738a36-f862-11eb-a0cf-000c2944909e.gif

本章將介紹幾個在比賽中常見的函數(shù),這幾個函數(shù)都是非常簡單,關(guān)系到LED,按鍵,繼電器等簡單的外設(shè)。

第一節(jié)HAL_GPIO_Init

函數(shù)原型:

voidHAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

函數(shù)解析:

這個是GPIO的初始化的函數(shù),這個函數(shù)主要用來初始化我們需要用到的引腳的工作模式,包括具體引腳的工作速度、是否復(fù)用模式、上下拉等等參數(shù)。形參解析:

一共兩名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

GPIO_InitTypeDef *GPIO_Init:該形參是對結(jié)構(gòu)體GPIO_InitTypeDef的指針的初始化,包含了外設(shè)GPIO的配置信息,比如GPIO引腳,模式,速度等等。該配置信息如下:(見stm32l0xx_hal_gpio.h)

cad1b110-f862-11eb-abe6-000c2944909e.png

返回值:

void函數(shù)無返回值。

第二節(jié)HAL_GPIO_DeInit

函數(shù)原型:

void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

函數(shù)解析:

該函數(shù)是承接HAL_GPIO_Init函數(shù)的,將初始化之后的引腳恢復(fù)成默認的狀態(tài),即各個寄存器復(fù)位時的值。

形參解析:

一共兩名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

uint32_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

void函數(shù)無返回值。

第三節(jié)HAL_GPIO_ReadPin

函數(shù)原型:

GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)

函數(shù)解析:

該函數(shù)是GPIO讀函數(shù),將GPIO的電平狀態(tài)讀取出來,一般讀取之后,就明白該GPIO的狀態(tài)了。

形參解析:

一共兩名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

如果讀取到高電平,返回GPIO_PIN_SET;如果是低電平,返回GPIO_PIN_RESET。

第四節(jié)HAL_GPIO_WritePin

函數(shù)原型:

voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinState PinState);

函數(shù)解析:

該函數(shù)是GPIO寫函數(shù),通過該函數(shù)操作GPIO的狀態(tài)。

形參解析:

一共三名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

GPIO_PinState PinState:該形參是對GPIO引腳的電平狀態(tài)的定義,如果是GPIO_PIN_SET,那么對該GPIO賦值為高電平;如果是GPIO_PIN_RESET,那么對該GPIO賦值為底電平。

返回值:

void函數(shù)無返回值。

第五節(jié)HAL_GPIO_TogglePin

函數(shù)原型:

void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

函數(shù)解析:

該函數(shù)是GPIO引腳電平狀態(tài)的翻轉(zhuǎn)函數(shù),通過該函數(shù)操作GPIO的電平的狀態(tài)的翻轉(zhuǎn)。

形參解析:

一共兩名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

void函數(shù)無返回值。

第六節(jié)HAL_GPIO_LockPin

函數(shù)原型:

HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

函數(shù)解析:

該函數(shù)是GPIO引腳電平狀態(tài)的鎖存函數(shù),使用該函數(shù)之后,將鎖定GPIO的狀態(tài),寫函數(shù)也無法改變,除非重置。

形參解析:

一共兩名形參,該形參的具體功能如下:

GPIO_TypeDef *GPIOx:該形參是對GPIO的類型的定義,比如:GPIOA,GPIOC等等。

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

由結(jié)構(gòu)體HAL_StatusTypeDef(如下圖,stm32l0xx_hal_def.h)可知,如果鎖存成功,返回HAL_OK(0x00U),如果失敗,返回HAL_ERROR(0x01U)。

caf793b0-f862-11eb-9162-000c2944909e.png

需要注意的是,只能返回這兩種值,即使該寄存器有四個變量。為什么呢?仔細看HAL_GPIO_LockPin函數(shù)的最后看明白了。

第七節(jié)HAL_GPIO_EXTI_IRQHandler

函數(shù)原型:

voidHAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

函數(shù)解析:

外部中斷服務(wù)函數(shù),用來響應(yīng)外部中斷的觸發(fā)。

形參解析:

一共一名形參,該形參的具體功能如下:

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

void函數(shù)無返回值。

第八節(jié)HAL_GPIO_EXTI_Callback

函數(shù)原型:

__weakvoid HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

函數(shù)解析:

該函數(shù)是回調(diào)函數(shù),說白了就是中斷之后,需要什么功能,就寫在這個函數(shù)里面。至于__weak,它是一個弱化標識,帶有這個的函數(shù)就是一個弱化函數(shù),就是你可以在其他地方寫一個名稱和參數(shù)都一模一樣的函數(shù),編譯器就會忽略這一個函數(shù),而去執(zhí)行你寫的那個函數(shù)。

形參解析:

一共一名形參,該形參的具體功能如下:

uint16_t GPIO_Pin:該形參是對GPIO引腳的定義,比如:GPIO_PIN_14,GPIO_PIN_15等等。

返回值:

該函數(shù)無返回值。

cb02f7a8-f862-11eb-9171-000c2944909e.png

往期精彩

【1】【藍橋杯物聯(lián)網(wǎng)】第二章 軟件環(huán)境搭建

【2】【藍橋杯物聯(lián)網(wǎng)】第一章 了解開發(fā)板

【3】藍橋杯單片機文檔教程免費下載

【4】

【5】【藍橋杯單片機】第十六章 獨立按鍵(松開有效)

cb0888be-f862-11eb-923c-000c2944909e.png

原文標題:【藍橋杯物聯(lián)網(wǎng)】第三章 stm32l0xx_hal_gpio.c的常見函數(shù)

文章出處:【微信公眾號:撞上電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    1

    文章

    129

    瀏覽量

    10166
收藏 人收藏

    評論

    相關(guān)推薦

    藍橋聯(lián)網(wǎng)需要安裝哪些軟件?

    藍橋聯(lián)網(wǎng)比賽需要安裝的軟件有如下幾種,需要大家自己在練習(xí)的時候自行安裝。下面是安裝教程。以下是需要安裝的軟件,本教程會一一帶領(lǐng)大家安裝,【注意:一定要按照順序安裝】沒有安裝包的話,
    的頭像 發(fā)表于 12-23 21:02 ?204次閱讀
    <b class='flag-5'>藍橋</b><b class='flag-5'>杯</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>需要安裝哪些軟件?

    藍橋聯(lián)網(wǎng)開發(fā)板硬件組成

    第一節(jié)開發(fā)板簡介聯(lián)網(wǎng)設(shè)計與開發(fā)競賽實訓(xùn)平臺由藍橋大賽技術(shù)支持單位北京四梯科技有限公司設(shè)計和生產(chǎn),該產(chǎn)品可用于參加藍橋
    的頭像 發(fā)表于 12-22 21:30 ?470次閱讀
    <b class='flag-5'>藍橋</b><b class='flag-5'>杯</b><b class='flag-5'>物</b><b class='flag-5'>聯(lián)網(wǎng)</b>開發(fā)板硬件組成

    藍橋該如何備賽?

    藍橋聯(lián)網(wǎng)已經(jīng)換了次開發(fā)板了,每次換板子,題目難度都會降低不少,所以說,藍橋
    的頭像 發(fā)表于 12-19 21:02 ?282次閱讀
    <b class='flag-5'>藍橋</b><b class='flag-5'>杯</b>該如何備賽?

    HAL庫的函數(shù)調(diào)用示例

    HAL(Hardware Abstraction Layer,硬件抽象層)庫是STM32等微控制器中常用的庫,它為開發(fā)者提供了訪問和控制硬件設(shè)備的接口。以下是一些常用的HAL函數(shù)及其
    的頭像 發(fā)表于 12-02 14:01 ?574次閱讀

    《DNK210使用指南 -CanMV版 V1.0》第三章 CanMV簡介

    第三章 CanMV簡介 本章將對CanMV進行簡單介紹本章分為如下幾個小節(jié):3.1 初識CanMV 3.2 CanMV的應(yīng)用開發(fā)方式 3.1 初識CanMVCanMV是嘉楠科技針對AIOT編程
    發(fā)表于 09-03 10:13

    迅為電子RK3588S開發(fā)板第三章Buildroot系統(tǒng)功能測試

    迅為電子RK3588S開發(fā)板第三章Buildroot系統(tǒng)功能測試
    的頭像 發(fā)表于 09-02 14:45 ?844次閱讀
    迅為電子RK3588S開發(fā)板<b class='flag-5'>第三章</b>Buildroot系統(tǒng)功能測試

    第12-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細講解+HAL庫)

    第12-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細講解+HAL庫)
    的頭像 發(fā)表于 08-21 16:31 ?2823次閱讀
    第12<b class='flag-5'>章</b>-ADC采集電壓和顯示 基于<b class='flag-5'>STM32</b>的ADC—電壓采集(詳細講解+<b class='flag-5'>HAL</b>庫)

    STM32F0xx_HAL_Driver庫的串口接收數(shù)據(jù)個數(shù),是不是只能寫成1,一個一個數(shù)據(jù)接收?

    在使用STM32F0xx_HAL_Driver庫進行串口接收數(shù)據(jù) HAL_StatusTypeDef HAL_UART_Receive( UART_HandleTypeDef *huart
    發(fā)表于 05-14 06:39

    利用ST Motor Control workbench生成工程編譯時無法完成編譯,好多函數(shù)沒有函數(shù)體是什么原因???

    stm32f3xx_hal_rcc_ex.c... compiling stm32f3xx_hal_gpio.c... compiling stm32f3xx_hal_rcc.c... compiling
    發(fā)表于 04-24 06:13

    stm32f4xx_hal_eth.c文件不支持PTP協(xié)議怎么解決?

    最近在用stm32f407調(diào)試ptp,但是stm32f4xx_hal_eth.c文件中沒有操作以太網(wǎng)時間戳寄存器的函數(shù),看到文件頭部說明本文件不支持PTP協(xié)議,請各位大神幫助,怎么解決這個問題!謝謝了!
    發(fā)表于 04-19 08:21

    SD外設(shè)初始化,程序卡在stm32l4xx_hal_sd.c的第3662行的原因?

    SD外設(shè)初始化,程序卡在stm32l4xx_hal_sd.c的第3662行 MDK版本:5.33 MCU:stm32l4r9zi
    發(fā)表于 04-08 08:11

    STM32的中斷函數(shù)HAL_GPIO_EXTI_Callback里面不能嵌套PWM嗎?

    請問,STM32的中斷函數(shù)HAL_GPIO_EXTI_Callback里面不能嵌套PWM嗎? void HAL_GPIO_EXTI_Callback(uint16_t
    發(fā)表于 04-07 08:24

    stm32f4xx_hal_spi.cHAL_SPI_TransmitReceive函數(shù)中,當需要發(fā)送數(shù)據(jù)時為什么要先進行一次發(fā)送?

    stm32f4xx_hal_spi.cHAL_SPI_TransmitReceive函數(shù)中,當需要發(fā)送數(shù)據(jù)時為什么要先進行一次發(fā)送(模式為從機或發(fā)送幀數(shù)為1時)
    發(fā)表于 03-25 07:00

    用cubeMX + STM32L0HAL庫1.12.1生成的自定義HID設(shè)備,接收后發(fā)送數(shù)據(jù)第三次開始會失敗卡死的原因?

    用cubeMX + STM32L0HAL庫1.12.1生成的自定義HID設(shè)備,在接收后發(fā)送數(shù)據(jù),第三次開始會失敗卡死,單獨接收和發(fā)送沒問題,用HAL庫1.12.0生成的沒問題
    發(fā)表于 03-21 08:05

    HAL src如何把stm32h7xx_hal_flash.c文件添加到src目錄?

    HAL src里怎么添加stm32h7xx_hal_flash.c文件到src目錄
    發(fā)表于 02-23 06:57