女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

HAL庫中do{...} while(0U) 宏定義的作用和意義

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-03 14:07 ? 次閱讀

應部分老鐵的要求,講一些細節知識點。一來,我不用花費大量精力去寫文章;二來,大家也不會因看文章覺得累。

1寫在前面

很多初學者,以及有一定工作經驗的朋友都不知道這個“do{...} while(0U)”作用和意義,甚至覺得這樣寫的代碼復雜且沒意義。

相信使用過STM32Cube HAL庫的朋友都知道,源碼里面有許多do{...} while(0U)的宏定義語句。

今天講的主要知識點是:HAL庫中do{...} while(0U)作用和意義。

當然,do{...} while(0U)不限于HAL庫中,適用于很多地方。

2

HAL庫中do{} while(0U)宏定義

在HAL庫中,很多.h文件都有do{...} while(0U)這樣的宏定義,比如:在stm32f1xx_hal_rcc.h中,使能GPIO時鐘

對比在LL庫中時鐘使能代碼,如下:

很多人只會覺得LL庫這種函數比較合理,而想不明白為什么HAL會使用這種“do{...} while(0U)”宏定義的語句。

下一章節重點講述一下這種“do{...} while(0U)”宏定義的作用和意義。

3

do{...} while(0U)宏定義的作用和意義

使用do{...} while(0U)這種方式其實有幾種重要作用,下面簡單說幾條:

1.編譯出錯

不使用do{}while:

使用大括號,多一個分號:

使用do{...} while(0U):

大家對比以上幾種,你覺得哪一種合理?

2.避免goto跳轉語句帶來問題

不使用do{}hwile(0):

使用do{}hwile(0):

大家再對比以上兩種,發現了什么問題?

我這里也不再繼續舉例說明了,大家可以上網了解,其實還有很多重要意義和作用。

怎么說呢,點到為止,希望對你有啟發。

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

    關注

    0

    文章

    51

    瀏覽量

    9178
  • stm32cubemx
    +關注

    關注

    5

    文章

    286

    瀏覽量

    15969
  • HAL庫
    +關注

    關注

    1

    文章

    121

    瀏覽量

    6742
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于STM32 HAL與標準的esp8266接入機智云方案(二)

    在《基于STM32HAL與標準的esp8266接入機智云方案(一)》,我們詳細介紹了硬件連接和機智云客戶端的創建。本篇將重點講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連
    的頭像 發表于 05-28 18:02 ?123次閱讀
    基于STM32 <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>與標準<b class='flag-5'>庫</b>的esp8266接入機智云方案(二)

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-27 08:05

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-24 07:50

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-22 08:14

    使用Hal的SPI讀取磁邊傳感器導致STM32G4無法運行怎么解決?

    )) &amp;&amp; (hspi-&gt;TxXferCount &gt; 0U) &amp;&
    發表于 03-14 08:24

    STM32H743程序啟動卡在了while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U),怎么解決?

    使用了STM32H743的MCU,程序啟動卡在了while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U),外部低速時鐘用示波器測量可以正常起振,電容容值12pF。
    發表于 03-14 07:00

    HAL在Arduino平臺上的使用

    HAL在Arduino平臺上的使用 Arduino平臺是一個開源的電子原型平臺,它包括硬件(基于微控制器的電路板)和軟件(Arduino IDE)。Arduino平臺因其簡單易用而受到廣泛歡迎
    的頭像 發表于 12-02 14:04 ?1426次閱讀

    HAL和標準的區別 HAL與CMSIS的關系

    在嵌入式系統開發HAL(硬件抽象層)和標準是兩種常用的軟件,它們在功能和使用場景上有所不同。 1. 標準
    的頭像 發表于 12-02 14:02 ?2936次閱讀

    HAL的函數調用示例

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

    HAL在STM32開發的重要性

    HAL(Hardware Abstraction Layer Library,硬件抽象層)在STM32開發扮演著至關重要的角色。以下是HAL
    的頭像 發表于 12-02 13:35 ?1166次閱讀

    如何快速入門HAL編程 HAL與裸機編程的比較

    如何快速入門HAL編程 要快速入門HAL編程,可以遵循以下步驟: 了解基礎知識 : 掌握C語言編程基礎,包括變量、數據類型、函數、指針等。 了解嵌入式系統的基本概念,如微控制器、中
    的頭像 發表于 12-02 11:39 ?961次閱讀

    HAL在嵌入式系統的應用

    HAL(Hardware Abstraction Layer Library,硬件抽象層)在嵌入式系統扮演著至關重要的角色。以下是HAL
    的頭像 發表于 12-02 11:32 ?1826次閱讀

    hali2c卡死在HAL_I2C_Master_Transmit

    ; Timeout) || (Timeout == 0U)) { if ((__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) == RESET)) { hi2c->
    發表于 10-31 09:03

    SVdefine定義的用法

    SV中使用預處理指令`define來定義可以用來創建文本替換。根據場景不同,`define主要用來定義常量、簡化復雜的表達式或代碼段以及提高代碼的可移植性。其基本語法為:
    的頭像 發表于 10-21 14:22 ?1623次閱讀

    課程上線 | STM32單片機入門教程(1)基于HAL的多核心開發(F1/F4/G0/U5)

    ?好消息!華清遠見STM32入門視頻課程《基于HAL的STM32多核心開發》正式上線,已更新90講,持續更新,8月份將全部上線。課程優勢真人出鏡,手把手教學一板玩轉STM32多型號多核心支持
    的頭像 發表于 08-08 16:42 ?676次閱讀
    課程上線 | STM32單片機入門教程(1)基于<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>的多核心開發(F1/F4/G<b class='flag-5'>0</b>/<b class='flag-5'>U</b>5)