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

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

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

【藍(lán)橋杯嵌入式G4】第二章 stm32l0xx_hal_gpio.c的常見(jiàn)函數(shù)

撞上電子 ? 2021-08-17 09:53 ? 次閱讀

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

第一節(jié)HAL_GPIO_Init

函數(shù)原型:

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

函數(shù)解析:

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

形參解析:

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

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

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

cc93326e-fc50-11eb-8f0a-000c2944909e.png

返回值:

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

第二節(jié)HAL_GPIO_DeInit

函數(shù)原型:

void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

函數(shù)解析:

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

形參解析:

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

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

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

返回值:

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

第三節(jié)HAL_GPIO_ReadPin

函數(shù)原型:

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

函數(shù)解析:

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

形參解析:

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

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

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

返回值:

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

第四節(jié)HAL_GPIO_WritePin

函數(shù)原型:

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

函數(shù)解析:

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

形參解析:

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

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

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

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

返回值:

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

第五節(jié)HAL_GPIO_TogglePin

函數(shù)原型:

void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);

函數(shù)解析:

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

形參解析:

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

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

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

返回值:

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

第六節(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),寫(xiě)函數(shù)也無(wú)法改變,除非重置。

形參解析:

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

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

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

返回值:

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

ccafe226-fc50-11eb-8480-000c2944909e.png

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

第七節(jié)HAL_GPIO_EXTI_IRQHandler

函數(shù)原型:

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

函數(shù)解析:

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

形參解析:

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

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

返回值:

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

第八節(jié)HAL_GPIO_EXTI_Callback

函數(shù)原型:

__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

函數(shù)解析:

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

形參解析:

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

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

返回值:

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

ccbe1aae-fc50-11eb-8210-000c2944909e.png

往期精彩

【1】開(kāi)發(fā)板開(kāi)獎(jiǎng)通知

【2】【藍(lán)橋杯物聯(lián)網(wǎng)】第四章 點(diǎn)亮一個(gè)LED

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

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

【5】藍(lán)橋杯單片機(jī)文檔教程免費(fèi)下載

ccd0a6a8-fc50-11eb-8976-000c2944909e.png

ccd94e42-fc50-11eb-9714-000c2944909e.png

點(diǎn)個(gè)在看你最好看

ccdfb6e8-fc50-11eb-ae40-000c2944909e.png

原文標(biāo)題:【藍(lán)橋杯嵌入式G4】第二章 stm32l0xx_hal_gpio.c的常見(jiàn)函數(shù)

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

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

    關(guān)注

    1

    文章

    127

    瀏覽量

    10150
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    藍(lán)橋該如何備賽?

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

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

    GPIO(通用輸入輸出)相關(guān)函數(shù) GPIO初始化 c復(fù)制代碼GPIO_InitTypeDef GPIO
    的頭像 發(fā)表于 12-02 14:01 ?433次閱讀

    如何快速入門HAL庫(kù)編程 HAL庫(kù)與裸機(jī)編程的比較

    如何快速入門HAL庫(kù)編程 要快速入門HAL庫(kù)編程,可以遵循以下步驟: 了解基礎(chǔ)知識(shí) : 掌握C語(yǔ)言編程基礎(chǔ),包括變量、數(shù)據(jù)類型、函數(shù)、指針等。 了解
    的頭像 發(fā)表于 12-02 11:39 ?325次閱讀

    HAL庫(kù)在嵌入式系統(tǒng)中的應(yīng)用

    HAL庫(kù)(Hardware Abstraction Layer Library,硬件抽象層庫(kù))在嵌入式系統(tǒng)中扮演著至關(guān)重要的角色。以下是HAL庫(kù)在嵌入式系統(tǒng)中的應(yīng)用的分析: 一、
    的頭像 發(fā)表于 12-02 11:32 ?593次閱讀

    《AI for Science:人工智能驅(qū)動(dòng)科學(xué)創(chuàng)新》第二章AI for Science的技術(shù)支撐學(xué)習(xí)心得

    非常高興本周末收到一本新書(shū),也非常感謝平臺(tái)提供閱讀機(jī)會(huì)。 這是一本挺好的書(shū),包裝精美,內(nèi)容詳實(shí),干活滿滿。 關(guān)于《AI for Science:人工智能驅(qū)動(dòng)科學(xué)創(chuàng)新》第二章“AI
    發(fā)表于 10-14 09:16

    【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗(yàn)】+第一二讀后感

    類型和產(chǎn)品,以及嵌入式Hypervisor的基礎(chǔ)知識(shí),這些內(nèi)容讓我對(duì)Hypervisor的應(yīng)用領(lǐng)域有了更廣泛的認(rèn)識(shí)。 接著,第二章詳細(xì)對(duì)比了兩種嵌入式Hypervisor的實(shí)現(xiàn)方式:基于分離內(nèi)核
    發(fā)表于 10-09 18:22

    【北京迅為】《stm32mp157開(kāi)發(fā)板嵌入式linux開(kāi)發(fā)指南》第五 Ubuntu使用apt-get下載

    【北京迅為】《stm32mp157開(kāi)發(fā)板嵌入式linux開(kāi)發(fā)指南》第五 Ubuntu使用apt-get下載
    的頭像 發(fā)表于 09-03 16:26 ?801次閱讀
    【北京迅為】《<b class='flag-5'>stm32</b>mp157開(kāi)發(fā)板<b class='flag-5'>嵌入式</b>linux開(kāi)發(fā)指南》第五<b class='flag-5'>章</b> Ubuntu使用apt-get下載

    【北京迅為】itop-龍芯2k1000 sylixos 嵌入式實(shí)時(shí)系統(tǒng)燒寫(xiě)手冊(cè)-第一第二章 詳細(xì)步驟

    【北京迅為】itop-龍芯2k1000 sylixos 嵌入式實(shí)時(shí)系統(tǒng)燒寫(xiě)手冊(cè)-第一第二章 詳細(xì)步驟
    的頭像 發(fā)表于 08-26 14:18 ?733次閱讀
    【北京迅為】itop-龍芯2k1000 sylixos <b class='flag-5'>嵌入式</b>實(shí)時(shí)系統(tǒng)燒寫(xiě)手冊(cè)-第一<b class='flag-5'>章</b>與<b class='flag-5'>第二章</b> 詳細(xì)步驟

    【「ARM MCU嵌入式開(kāi)發(fā) | 基于國(guó)產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+書(shū)籍整體概況

    是國(guó)產(chǎn)芯片的佼佼者,此書(shū)籍深入淺出地講解了嵌入式系統(tǒng)開(kāi)發(fā)的基礎(chǔ)知識(shí),當(dāng)然閱讀者還是需要掌握一定的C語(yǔ)言知識(shí)的,案例是基于GD官方的標(biāo)準(zhǔn)庫(kù)函數(shù)實(shí)現(xiàn)的。 四、目錄展示 第一為概述內(nèi)容,主
    發(fā)表于 08-25 22:48

    學(xué)習(xí)hypervisor嵌入式產(chǎn)品安全設(shè)計(jì)

    第一部分(第1~2)介紹Hypervisor基礎(chǔ),涵蓋虛擬化技術(shù)與實(shí)現(xiàn)、主流的嵌入式Hypervisor產(chǎn)品,以及基于分離內(nèi)核的嵌入式Hypervisor等內(nèi)容。第二部分(第3~12
    發(fā)表于 08-25 09:11

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

    最近在用stm32f407調(diào)試ptp,但是stm32f4xx_hal_eth.c文件中沒(méi)有操作以太網(wǎng)時(shí)間戳寄存器的函數(shù),看到文件頭部說(shuō)明本文件不支持PTP協(xié)議,請(qǐng)各位大神幫助,怎么解決這個(gè)問(wèn)題!謝謝了!
    發(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

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

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

    STM32G4XX不能夠像STM32F1XX STM32F4XX那樣對(duì)GPIO進(jìn)行位帶操作呢?

    請(qǐng)教下,在STM32G4XX系列里面,GPIO掛載在AHB2總線上面,地址在0x4800 0000. 是不是也就意味著,STM32G4XX不能夠在像
    發(fā)表于 03-21 07:16

    嵌入式open函數(shù)的使用

    嵌入式系統(tǒng)是指嵌入到其他設(shè)備或系統(tǒng)中,用于控制和管理硬件資源的計(jì)算機(jī)系統(tǒng)。在嵌入式系統(tǒng)中,通常需要與外部設(shè)備進(jìn)行數(shù)據(jù)交互,例如讀取傳感器數(shù)據(jù)、控制執(zhí)行器等。open函數(shù)
    的頭像 發(fā)表于 01-04 15:51 ?697次閱讀