一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-03 14:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

應(yīng)部分老鐵的要求,講一些細(xì)節(jié)知識(shí)點(diǎn)。一來(lái),我不用花費(fèi)大量精力去寫(xiě)文章;二來(lái),大家也不會(huì)因看文章覺(jué)得累。

1寫(xiě)在前面

很多初學(xué)者,以及有一定工作經(jīng)驗(yàn)的朋友都不知道這個(gè)“do{...} while(0U)”作用和意義,甚至覺(jué)得這樣寫(xiě)的代碼復(fù)雜且沒(méi)意義。

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

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

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

2

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

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

對(duì)比在LL庫(kù)中時(shí)鐘使能代碼,如下:

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

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

3

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

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

1.編譯出錯(cuò)

不使用do{}while:

使用大括號(hào),多一個(gè)分號(hào):

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

大家對(duì)比以上幾種,你覺(jué)得哪一種合理?

2.避免goto跳轉(zhuǎn)語(yǔ)句帶來(lái)問(wèn)題

不使用do{}hwile(0):

使用do{}hwile(0):

大家再對(duì)比以上兩種,發(fā)現(xiàn)了什么問(wèn)題?

我這里也不再繼續(xù)舉例說(shuō)明了,大家可以上網(wǎng)了解,其實(shí)還有很多重要意義和作用。

怎么說(shuō)呢,點(diǎn)到為止,希望對(duì)你有啟發(fā)。

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

    關(guān)注

    0

    文章

    51

    瀏覽量

    9231
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    16273
  • HAL庫(kù)
    +關(guān)注

    關(guān)注

    1

    文章

    121

    瀏覽量

    6944
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于STM32 HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的esp8266接入機(jī)智云方案(二)

    在《基于STM32HAL庫(kù)與標(biāo)準(zhǔn)庫(kù)的esp8266接入機(jī)智云方案(一)》,我們?cè)敿?xì)介紹了硬件連接和機(jī)智云客戶(hù)端的創(chuàng)建。本篇將重點(diǎn)講解如何下載代碼、分析下載的代碼,并直接使用這些代碼連
    的頭像 發(fā)表于 05-28 18:02 ?479次閱讀
    基于STM32 <b class='flag-5'>HAL</b><b class='flag-5'>庫(kù)</b>與標(biāo)準(zhǔn)<b class='flag-5'>庫(kù)</b>的esp8266接入機(jī)智云方案(二)

    STM32U5 IWDG的提前喚醒中斷無(wú)法在STOP模式下觸發(fā)怎么解決?

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

    STM32U5 IWDG的提前喚醒中斷無(wú)法在STOP模式下觸發(fā)怎么解決?

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

    STM32U5 IWDG的提前喚醒中斷無(wú)法在STOP模式下觸發(fā)怎么解決?

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

    使用Hal庫(kù)的SPI讀取磁邊傳感器導(dǎo)致STM32G4無(wú)法運(yùn)行怎么解決?

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

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

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

    HAL庫(kù)在A(yíng)rduino平臺(tái)上的使用

    HAL庫(kù)在A(yíng)rduino平臺(tái)上的使用 Arduino平臺(tái)是一個(gè)開(kāi)源的電子原型平臺(tái),它包括硬件(基于微控制器的電路板)和軟件(Arduino IDE)。Arduino平臺(tái)因其簡(jiǎn)單易用而受到廣泛歡迎
    的頭像 發(fā)表于 12-02 14:04 ?1628次閱讀

    HAL庫(kù)和標(biāo)準(zhǔn)庫(kù)的區(qū)別 HAL庫(kù)與CMSIS的關(guān)系

    在嵌入式系統(tǒng)開(kāi)發(fā)HAL(硬件抽象層)庫(kù)和標(biāo)準(zhǔn)庫(kù)是兩種常用的軟件庫(kù),它們?cè)诠δ芎褪褂脠?chǎng)景上有所不同。 1. 標(biāo)準(zhǔn)
    的頭像 發(fā)表于 12-02 14:02 ?3265次閱讀

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

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

    HAL庫(kù)在STM32開(kāi)發(fā)的重要性

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

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

    如何快速入門(mén)HAL庫(kù)編程 要快速入門(mén)HAL庫(kù)編程,可以遵循以下步驟: 了解基礎(chǔ)知識(shí) : 掌握C語(yǔ)言編程基礎(chǔ),包括變量、數(shù)據(jù)類(lèi)型、函數(shù)、指針等。 了解嵌入式系統(tǒng)的基本概念,如微控制器、中
    的頭像 發(fā)表于 12-02 11:39 ?1137次閱讀

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

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

    hal庫(kù)i2c卡死在HAL_I2C_Master_Transmit

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

    SVdefine定義的用法

    SV中使用預(yù)處理指令`define來(lái)定義可以用來(lái)創(chuàng)建文本替換。根據(jù)場(chǎng)景不同,`define主要用來(lái)定義常量、簡(jiǎn)化復(fù)雜的表達(dá)式或代碼段以及提高代碼的可移植性。其基本語(yǔ)法為:
    的頭像 發(fā)表于 10-21 14:22 ?1904次閱讀

    課程上線(xiàn) | STM32單片機(jī)入門(mén)教程(1)基于HAL庫(kù)的多核心開(kāi)發(fā)(F1/F4/G0/U5)

    ?好消息!華清遠(yuǎn)見(jiàn)STM32入門(mén)視頻課程《基于HAL庫(kù)的STM32多核心開(kāi)發(fā)》正式上線(xiàn),已更新90講,持續(xù)更新,8月份將全部上線(xiàn)。課程優(yōu)勢(shì)真人出鏡,手把手教學(xué)一板玩轉(zhuǎn)STM32多型號(hào)多核心支持
    的頭像 發(fā)表于 08-08 16:42 ?762次閱讀
    課程上線(xiàn) | STM32單片機(jī)入門(mén)教程(1)基于<b class='flag-5'>HAL</b><b class='flag-5'>庫(kù)</b>的多核心開(kāi)發(fā)(F1/F4/G<b class='flag-5'>0</b>/<b class='flag-5'>U</b>5)